﻿<?xml version="1.0" encoding="utf-8"?>
<documentation file="ti83plus.inc">
  <symbol name="_jerrorno" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4000"><![CDATA[_jerrorno

Description

Inputs:
- (errNo) contains error code (bit 7=1 for GoTo option)


Outputs:
- System error displayed or error handler called


Registers Destroyed:
 All

Comments:
This is the same as JError except the error code is in (errNo).]]></symbol>
  <symbol name="_fonthook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4003"><![CDATA[_fonthook

Calls the routine currently set as the font hook.

Inputs:
- Register values to pass to the font hook


Outputs:
- If the hook is invalid, it is disabled, and all registers and flags are preserved.
- Otherwise, the hook is called, and all register values upon exiting the hook are preserved and returned.


Registers Destroyed:
 All registers except (sometimes) HL and B

Comments:
This routine does not check that the hook is enabled.  You must test this yourself, e.g.]]></symbol>
  <symbol name="_call_character_hook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4006"><![CDATA[_call_character_hook

Calls the routine currently set as the localize hook routine.

Inputs:
- localize hook set


Outputs:
- return value of localize hook routine


Registers Destroyed:
 None]]></symbol>
  <symbol name="_ldhlind" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4009"><![CDATA[_ldhlind

Loads the value at (HL) into register HL.

Inputs:
- HL: pointer to bytes to load


Outputs:
- HL: value located at input (HL)


Registers Destroyed:
 AF

Comments:
Useful utility call.  Equivalent code located in example.]]></symbol>
  <symbol name="_cphlde" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:400c"><![CDATA[_cphlde

Compares HL and DE.

Inputs:
- HL: operand 1
- DE: operand 2


Outputs:
- Z set if DE=HL
- C set if DE&gt;HL


Registers Destroyed:
 none

Comments:
Simple enough to implement if speed is important]]></symbol>
  <symbol name="_divhlby10" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:400f"><![CDATA[_divhlby10

Divides the value in HL by 10.

Inputs:
- HL: integer


Outputs:
- HL = HL / 10
- A = HL mod 10


Registers Destroyed:
 none

Comments:
Simple enough to implement if speed is important.]]></symbol>
  <symbol name="_divhlbya" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4012"><![CDATA[_divhlbya

Divides the value in HL by the value in A.

Inputs:
- HL: integer
- A: integer


Outputs:
- HL = HL / A
- A = HL mod A


Registers Destroyed:
 none

Comments:
Simple enough to implement if speed is important.  However, it may return invalid results if A is larger than 127 since the routine does not correctly handle overflows.]]></symbol>
  <symbol name="_kdbscan" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4015"><![CDATA[_kdbscan

This routine scans the keyboard for any key presses and updates the memory location kbdScanCode.

Inputs:
- none


Outputs:
- (kbdScanCode)=scan code of key press


Comments:
Normally this BCALL is called by the interrupt routine.  If interrupts are not enabled, this can be used prior to the Getcsc BCALL to achieve the same results.]]></symbol>
  <symbol name="_getcsc" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4018"><![CDATA[_getcsc

This routine loads the most recent scan code into register A.

Inputs:
- none


Outputs:
- A=(kbdScanCode)
- (kbdScanCode)=0
- kbdSCR,(iy+kbdFlags) reset


Registers Destroyed:
 HL=kbdScanCode

Comments:
This routine expects that either interrupts are enabled or KbdScan was called manually.  Either of these routines will check the keyboard and load the appropriate scan code into the memory location kbdScanCode and set the flag kbdSCR,(iy+kbdFlags).]]></symbol>
  <symbol name="_coormon" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:401b"><![CDATA[_coormon

This routine is similar to Mon but calls additional routines during initialization.

Inputs:
- appAllowContext, (IY + apiFlg) = 1 to allow Mon to pass context keys, like kYequ to the cxMain routine.
- curLock, (IY + curFlags) = 1 to lock the cursor off
-&nbsp;??? more?


Outputs:
- none


Registers Destroyed:
 All

Comments:
This routine does the equivalent of:]]></symbol>
  <symbol name="_mon" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:401e"><![CDATA[_mon

Starts the system monitor. The system monitor will take over the system, andreport events to the application via the monitor vectors. The application mustset its own monitor vectors with AppInit before calling Mon. Control of theapplication will never be returned from Mon.

Inputs:
- AppAllowContext, (IY + APIFlg) = 1 to allow Mon to pass context keys, like kYequ to the cxMain routine.
- CurLock, (IY + curFlags) = 1 to lock the cursor off


Outputs:
- none


Comments:
The system NEVER returns from this B_CALL.  The programmer should find alternative methods of regaining control and exiting such as hooks, cxMain, etc.]]></symbol>
  <symbol name="_monforcekey" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4021"><![CDATA[_monforcekey

Calls the system monitor but allows the programmer to push an initial key through cxMain.  This is very much like Mon.

Inputs:
- a = initial key press to simulate
- AppAllowContext, (IY + APIFlg) = 1 to allow Mon to pass context keys, like
- kYequ to the cxMain routine.
- CurLock, (IY + curFlags) = 1 to lock the cursor off


Outputs:
- none


Comments:
The system NEVER returns from this B_CALL.  The programmer should find alternative methods of regaining control and exiting such as hooks, cxMain, etc.]]></symbol>
  <symbol name="_sendkpress" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4024"><![CDATA[_sendkpress

Calls the system monitor but allows the programmer to push an initial key through cxMain.  This is very much like Mon and MonForceKey.

Inputs:
- A = initial key press to simulate
- AppAllowContext, (IY + APIFlg) = 1 to allow Mon to pass context keys, like kYequ to the cxMain routine.
- CurLock, (IY + curFlags) = 1 to lock the cursor off


Outputs:
- none


Registers Destroyed:
 Doesn't matter because it doesn't return

Comments:
This routine is similar to MonForceKey, but the initial keypress is passed more-or-less directly to cxMain (whereas MonForceKey passes the keypress to the raw key hook, if enabled, and handles the various special keys.)]]></symbol>
  <symbol name="_jforcecmdnochar" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4027"><![CDATA[_jforcecmdnochar

Exits the current application and returns to the homescreen.

Inputs:
- None


Outputs:
- None


Comments:
This routine is the standard way of exiting a Flash Application.  (Although there are other ways, in practice this is the only one you'll ever need.  Note that simply returning with the 'ret' statement does not work.)  In contrast, normal RAM assembly programs should never use this routine.  (In the middle somewhere are scripts and hooks; don't use this routine in a hook or script unless you really know what you're doing.)]]></symbol>
  <symbol name="_jforcecmd" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:402a"><![CDATA[_jforcecmd

Exits the current application and returns to the homescreen, optionally passing a "virtual keypress" to the homescreen.

Inputs:
- A = initial keypress to simulate
- (keyExtend) = extended keycode


Outputs:
- None


Registers Destroyed:
 Everything (this routine does not return)

Comments:
This routine is similar to JForceCmdNoChar, but allows you to pass a single keypress to the homescreen's cxMain handler (in a manner similar to SendKPress.)]]></symbol>
  <symbol name="_syserrhandler" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:402d"><![CDATA[_syserrhandler

An error handler which displays the standard "ERR:" screen.

Inputs:
- (errNo) = error code


Outputs:
- None


Registers Destroyed:
 Everything (this routine does not return)

Comments:
This routine is sometimes used by the OS as an error handler.  It's very similar to monErrHand, and I'm not sure why  this routine would ever be used instead.]]></symbol>
  <symbol name="_newcontext" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4030"><![CDATA[_newcontext

Loads one of the TIOS builtin apps.

Inputs:
- A = context equate (see cxCurApp)


Outputs:
- Context vectors set to the desired app


Registers Destroyed:
 Many additional side effects are possible depending on the app selected

Comments:
This routine (similar to NewContext0) puts away the current app, loads the context vectors for a particular builtin app, and calls the appropriate initialization code.]]></symbol>
  <symbol name="_newcontext0" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4033"><![CDATA[_newcontext0

Loads one of the TIOS builtin apps.

Inputs:
- A = context equate (see cxCurApp)


Outputs:
- Context vectors set to the desired app
- others?


Registers Destroyed:
 Many additional side effects are possible depending on the app selected

Comments:
This B_CALL puts away the current app, loads the context vectors for a particular builtin app, and calls the appropriate initialization code.  (It does return, however.)]]></symbol>
  <symbol name="_cxputaway" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4036"><![CDATA[_cxputaway

Calls the current app's PPutAway and PutAway routines.  Also clears the promptEdit flag.

Inputs:
- (cxPPutAway) = address of partial put-away routine
- (cxPutAway) = address of normal put-away routine


Outputs:
- None


Registers Destroyed:
 Depends on the app (but you can assume all registers will be destroyed)

Comments:
I'm not sure why the promptEdit flag is reset here.]]></symbol>
  <symbol name="_cxputaway2" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4039"><![CDATA[_cxputaway2

Calls the current app's PPutAway routine.

Inputs:
- (cxPPutAway) = address of partial put-away routine


Outputs:
- None


Registers Destroyed:
 Depends on the app (but you can assume all registers will be destroyed)

Comments:
If bit 5, (iy + 25h) is set, this routine does nothing.  Otherwise it calls the routine currently set as the partial put-away handler.]]></symbol>
  <symbol name="_cxpputaway" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:403c"><![CDATA[_cxpputaway

Calls the current app's PutAway routine.

Inputs:
- (cxPutAway) = address of put-away routine


Outputs:
- None


Registers Destroyed:
 Depends on the app (but you can assume all registers will be destroyed)

Comments:
If bit 5, (iy + 25h) is set, this routine does nothing.  Otherwise it calls the routine currently set as the put-away handler.]]></symbol>
  <symbol name="_cxsizewind" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:403f"><![CDATA[_cxsizewind

Calls the current app's SizeWind routine.

Inputs:
- (cxSizeWind) = address of window-resize routine
- (menuActive) = number of menu rows currently active
- Carry flag = 0 if adding menu rows (shrinking window), 1 if removing menu rows (expanding window)


Outputs:
- None


Registers Destroyed:
 Depends on the app (but you can assume all registers will be destroyed)

Comments:
(cxSizeWind) is one of the six "context vectors" that are specified by calling AppInit.]]></symbol>
  <symbol name="_cxerrep" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4042"><![CDATA[_cxerrep

Calls the current app's ErrorEP routine.

Inputs:
- (cxErrorEP) = address of error goto routine
- (errOffset) = offset into current program where the error occurred (?)


Outputs:
- None


Registers Destroyed:
 Depends on the app (but you can assume all registers will be destroyed)

Comments:
(cxErrorEP) is one of the six "context vectors" that are specified by calling AppInit.]]></symbol>
  <symbol name="_cxmain" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4045"><![CDATA[_cxmain

Calls the cxMain vector.

Inputs:
- a = key to send to cxMain
- (keyExtend) = second byte of key press, if it exists


Outputs:
- This varies depending on the routine in use.


Registers Destroyed:
 HL is preserved.  All other registers depend on the current CxMain routine in use.

Comments:
Typically the OS expects the following inputs:]]></symbol>
  <symbol name="_monerrhand" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4048"><![CDATA[_monerrhand

The main system error handler.

Inputs:
- (errNo) = error code


Outputs:
- None


Registers Destroyed:
 Everything (this routine does not return)

Comments:
This is the default system error handler, which will handle errors if no other error handler has been set.  It simply pushes itself back onto the stack, loads the "cxError" context, and jumps to Mon.]]></symbol>
  <symbol name="_appinit" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:404b"><![CDATA[_appinit

Sets the context vector table so an application can receive various notifications from the OS.

Inputs:
- HL=address of custom vector table to copy


Outputs:
- cxMain and the 6 vectors that follow
- cxPage is set to the current page of the app
- (iy+appFlags) is set to the 15th byte of the table


Registers Destroyed:
 HL, A, DE

Comments:
Typically this routine is called at the start of an application so that the application can receive events and react appropriately.  If this routine is used, it is also important to call ReloadAppEntryVecs before exiting the app.  Failing to do so will likely result in a crash.]]></symbol>
  <symbol name="_resetram" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:404e"><![CDATA[_resetram

Reset the calculator's RAM.

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 Everything (this routine does not return)

Comments:
This routine only clears the first two pages of RAM.]]></symbol>
  <symbol name="_lcd_busy" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4051"><![CDATA[_lcd_busy

Waits for the LCD to be done.

Inputs:
- None


Outputs:
- LCD is ready.


Registers Destroyed:
 None

Comments:
This is the same as]]></symbol>
  <symbol name="_min" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4054"><![CDATA[_min

Sets op1 to the smaller of the two floating point numbers in op1 and op2.

Inputs:
- op1 = floating point number
- op2 = floating point number


Outputs:
- op1 = the smaller floating point number 


Registers Destroyed:
 AF, BC, DE, HL, OP3, OP4

Comments:
This is similar to the BASIC function Min().]]></symbol>
  <symbol name="_max" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4057"><![CDATA[_max

Sets OP1 to the larger of the two floating point numbers in OP1 and OP2.

Inputs:
- OP1 = floating point number
- OP2 = floating point number


Outputs:
- OP1 = the bigger floating point number


Registers Destroyed:
 AF, BC, DE, HL, OP3, OP4

Comments:
This is similar to the BASIC function Max().]]></symbol>
  <symbol name="_trunc" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4060"><![CDATA[_trunc

Truncates the fractional part of a floating point number in OP1.

Inputs:
- OP1 = floating point number


Outputs:
- OP1 = integer part of floating point number 


Registers Destroyed:
 AF, BC, DE, HL

Comments:
This is similar to the BASIC function int().]]></symbol>
  <symbol name="_invsub" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4063"><![CDATA[_invsub

Computes the floating point subtraction OP2-OP1.

Inputs:
- OP1 = floating point number
- OP2 = floating point number


Outputs:
- OP1 = OP2-OP1


Registers Destroyed:
 AF, BC, DE, HL

Comments:
This is similar to FPsub.]]></symbol>
  <symbol name="_times2" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4066"><![CDATA[_times2

Doubles the floating point number in OP1.

Inputs:
- OP1 = floating point number


Outputs:
- OP1 = 2*OP1
- OP2 = original value of OP1


Registers Destroyed:
 AF, BC, DE, HL

Comments:
This is faster than loading OP2 with 2 and using FPmult.]]></symbol>
  <symbol name="_plus1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4069"><![CDATA[_plus1

Increments the floating point number in OP1 by one.

Inputs:
- OP1 = floating point number


Outputs:
- OP1 = OP1 + 1
- OP2 = floating point 1


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_minus1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:406c"><![CDATA[_minus1

Decrements the floating point number in OP1 by one.

Inputs:
- OP1 = floating point number


Outputs:
- OP1 = OP1 - 1
- OP2 = floating point value of 1


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_fpsub" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:406f"><![CDATA[_fpsub

Subtracts the floating point number in OP2 from the floating point number in OP1 and stores the result in OP1.

Inputs:
- OP1 = floating point number
- OP2 = floating point number 


Outputs:
- OP1 = OP1 - OP2
- OP2 = - OP2


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_fpadd" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4072"><![CDATA[_fpadd

Adds the floating point number in OP1 to the floating point number in OP2 and stores the result in OP1.

Inputs:
- OP1 = floating point number
- OP2 = floating point number 


Outputs:
- OP1 = OP1 + OP2


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_dtor" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4075"><![CDATA[_dtor

Converts degrees to radians.

Inputs:
- OP1 = degrees


Outputs:
- OP1 = radians
- OP2 = Pi/180


Registers Destroyed:
 AF, BC, DE, HL

Comments:
This conversion is done by multiplying OP1 by Pi/180.  This number may exceed 2Pi.]]></symbol>
  <symbol name="_rtod" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4078"><![CDATA[_rtod

Converts radians to degrees.

Inputs:
- OP1 = radians


Outputs:
- OP1 = degrees
- OP2 = 180/Pi


Registers Destroyed:
 AF, BC, DE, HL

Comments:
This conversion is done by multiplying OP1 by 180/Pi.  This number may exceed 360.]]></symbol>
  <symbol name="_cube" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:407b"><![CDATA[_cube

Raises a floating point number in OP1 to the third power.

Inputs:
- OP1 = floating point


Outputs:
- OP1 = OP13
- OP2 = original OP1


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_timespt5" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:407e"><![CDATA[_timespt5

Halves the floating point number in OP1.

Inputs:
- OP1 = floating point number


Outputs:
- OP1 = OP1/2
- OP2 = floating point 0.5


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_fpsquare" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4081"><![CDATA[_fpsquare

Raises the floating point number in OP1 to the second power and stores the result in OP1.

Inputs:
- OP1 = floating point number


Outputs:
- OP1 = OP1^2
- OP2 = orginal value of OP1


Registers Destroyed:
 AF, BC, DE, HL, OP3]]></symbol>
  <symbol name="_fpmult" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4084"><![CDATA[_fpmult

Multiplies the floating point number in OP1 by the floating point number in OP2 and stores the result in OP1.

Inputs:
- OP1 = floating point number
- OP2 = floating point number 


Outputs:
- OP1 = OP1 * OP2


Registers Destroyed:
 AF, BC, DE, HL, OP3]]></symbol>
  <symbol name="_ljrnd" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4087"><![CDATA[_ljrnd

Adjusts OP1 to normalized floating point form and rounds to the 14th digit. 

Inputs:
- OP1 = floating point, not necessarily normalized 


Outputs:
- OP1 = normalized floating point


Registers Destroyed:
 A, C, HL

Comments:
This shifts all digits in the mantissa of the floating point in OP1 leftward if there are any leading zeros in the mantissa.  The exponent is adjusted appropriately after the shift.]]></symbol>
  <symbol name="_invop1sc" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:408a"><![CDATA[_invop1sc

Negates the complex value represented by OP1 and OP2.

Inputs:
- OP1:OP2 = complex number 


Outputs:
- OP1:OP2 = -(OP1:OP2)


Registers Destroyed:
 AF

Comments:
This routine inverts the sign bits of OP1 and OP2 unless they are floating point zeros.  If the value in OP1 or OP2 is a floating point zero, then the sign bit of the floating point number is not inverted.]]></symbol>
  <symbol name="_invop1s" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:408d"><![CDATA[_invop1s

Negates the floating point number in OP1.

Inputs:
- OP1 = floating point number 


Outputs:
- OP1 = -OP1


Registers Destroyed:
 AF

Comments:
This routine inverts the sign bit of OP1 unless it is a floating point zero.  If the value in OP1 is a floating point zero, then the sign bit is not inverted.]]></symbol>
  <symbol name="_invop2s" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4090"><![CDATA[_invop2s

Negates the floating point number in OP2.

Inputs:
- OP2 = floating point number 


Outputs:
- OP2 = -OP2


Registers Destroyed:
 AF

Comments:
This routine inverts the sign bit of OP2 unless it is a floating point zero.  If the value in OP2 is a floating point zero, then the sign bit is not inverted.]]></symbol>
  <symbol name="_frac" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4093"><![CDATA[_frac

Finds the fractional part of OP1 and returns the value in OP1.

Inputs:
- OP1 = floating point


Outputs:
- OP1 = OP1-int(OP1)


Registers Destroyed:
 AF, HL

Comments:
This is similar to the BASIC function fPart().  For negative numbers, the sign bit will remain.]]></symbol>
  <symbol name="_fprecip" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4096"><![CDATA[_fprecip

Finds the multiplicative inverse of the floating point in OP1 and stores the result in OP1.

Inputs:
- OP1 = floating point


Outputs:
- OP1 = 1/OP1
- OP2 = original value of OP1


Registers Destroyed:
 AF, BC, DE, HL, OP3]]></symbol>
  <symbol name="_fpdiv" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4099"><![CDATA[_fpdiv

Divides the floating point number in OP1 by the floating point number in OP2 and stores the result in OP1.

Inputs:
- OP1 = floating point
- OP2 = floating point


Outputs:
- OP1 = OP1/OP2
- Approx. TStates: Worst Case 55,000 If op2 is truncated and filled with zeros 35,000 (if op2 is a one digit float)


Registers Destroyed:
 AF, BC, DE, HL, OP3]]></symbol>
  <symbol name="_sqroot" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:409c"><![CDATA[_sqroot

Calculates the square root of the floating point number in OP1 and stores the result in OP1.

Inputs:
- OP1 = floating point


Outputs:
- OP1 = Sqrt(OP1)


Registers Destroyed:
 AF, BC, DE, HL, OP2, OP3]]></symbol>
  <symbol name="_rndguard" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:409f"><![CDATA[_rndguard

Rounds OP1 to 10 digits.

Inputs:
- OP1 = floating point


Outputs:
- OP1 = OP1 rounded to the 10th digit


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_rnfx" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:40a2"><![CDATA[_rnfx

Rounds OP1 to according to the FIX display setting.

Inputs:
- OP1 = floating point


Outputs:
- OP1 = OP1 rounded to the Nth decimal place


Registers Destroyed:
 None

Comments:
Assuming the FIX setting was 3:]]></symbol>
  <symbol name="_int" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:40a5"><![CDATA[_int

Rounds OP1 to an integer.

Inputs:
- OP1 = floating point


Outputs:
- OP1 = OP1 rounded to an integer


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_round" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:40a8"><![CDATA[_round

Rounds OP1 to the Nth decimal place where N is specified by register D.

Inputs:
- D = number of decimal digits to round to
- OP1 = floating point


Outputs:
- OP1 = OP1 rounded to an integer


Registers Destroyed:
 AF, BC, HL]]></symbol>
  <symbol name="_lnx" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:40ab"><![CDATA[_lnx

Computes the natural log of OP1 and returns the result in OP1.

Inputs:
- OP1 = floating point


Outputs:
- OP1 = natural log of OP1


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_logx" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:40ae"><![CDATA[_logx

Computes the natural log of OP1 and returns the result in OP1.

Inputs:
- OP1 = floating point


Outputs:
- OP1 = natural log of OP1


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_ljnornd" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:40b1"><![CDATA[_ljnornd

Adjusts OP1 to normalized floating point form. 

Inputs:
- OP1 = floating point, not necessarily normalized 


Outputs:
- OP1 = normalized floating point


Registers Destroyed:
 A, C, HL

Comments:
This shifts all digits in the mantissa of the floating point in OP1 leftward if there are any leading zeros in the mantissa.  The exponent is adjusted appropriately after the shift.]]></symbol>
  <symbol name="_etox" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:40b4"><![CDATA[_etox

Computes the e^OP1, where e is the natural exponent, and returns the result in OP1.

Inputs:
- OP1 = floating point


Outputs:
- OP1 = e^OP1
- Approx. TStates: 100,000


Registers Destroyed:
 AF, BC, DE, HL

Comments:
The cycle count for this routine is very high.]]></symbol>
  <symbol name="_tenx" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:40b7"><![CDATA[_tenx

Takes 10^(OP1) and returns the result in OP1.

Inputs:
- OP1 = floating point


Outputs:
- OP1 = 10^(OP1)


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_cos" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:40c0"><![CDATA[_cos

Computes the cosine of OP1 and returns the result in OP1.

Inputs:
- OP1 = floating point value


Outputs:
- OP1 = cosine of OP1


Registers Destroyed:
 AF, BC, DE, HL

Comments:
Takes approximately 150,000 to 200,000 clock cycles.]]></symbol>
  <symbol name="_atan2rad" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:40d8"><![CDATA[_atan2rad

Compute the arctangent of OP1 divided by OP2, placing the result in the correct quadrant according to the signs of its arguments.

Inputs:
- OP1 = Y coordinate
- OP2 = X coordinate
- D = 0 (see below)


Outputs:
- OP1 = angle in radians


Registers Destroyed:
 AF, BC, DE, HL

Comments:
The official documentation makes no mention of the effect of the D register; the initialization of D seems to have been left out accidentally.  To obtain the documented behavior, D should be set to zero.  In any case, D affects the output as follows:]]></symbol>
  <symbol name="_mov11b" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4159"><![CDATA[_mov11b

Copies an 11 byte memory block from source to destination.

Inputs:
- HL: start of source block
- DE: start of destination block


Outputs:
- 11 byte block starting at original HL copied to original DE


Registers Destroyed:
 BC DE HL

Comments:
This B_CALL is similar to all the other MovXB ones out there.  For some reason, TI didn't document this one.]]></symbol>
  <symbol name="_mov9toop1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:417a"><![CDATA[_mov9toop1

Copies the 9 Bytes at HL to Op1

Inputs:
- HL = Address of bytes to copy


Outputs:
- OP1 has the 9 bytes


Comments:
You should use RST 20h instead of BCALL(Mov9toOp1).  It's faster.  See 83Plus:OS:RST_Routines]]></symbol>
  <symbol name="_opset0" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:41c2"><![CDATA[_opset0

BCALL Address: 41C2

Inputs:
- HL = address to copy a floating point zero to


Outputs:
- A = 0
- HL = HL+9
- Floating point zero stored to memory


Comments:
Sets the ten bytes starting at address HL to a floating point zero.]]></symbol>
  <symbol name="_shracc" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:41d4"><![CDATA[_shracc

Shifts the upper 4 bits of the accumulator to the lower four bits.

Inputs:
- A: the bits to shift


Outputs:
- A: the upper four bits shifted to the lower four


Registers Destroyed:
 Michael Vincent: For discovering this B_CALL.

Comments:
None]]></symbol>
  <symbol name="_shlacc" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:41d7"><![CDATA[_shlacc

Shifts the lower 4 bits of the accumulator to the upper four bits.

Inputs:
- A: the bits to shift


Outputs:
- A: the lower four bits shifted to the upper four


Registers Destroyed:
 Michael Vincent: For discovering this B_CALL.

Comments:
None]]></symbol>
  <symbol name="_getconop1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:423d"><![CDATA[_getconop1

Loads one of seven different commonly used constants to OP1.

Inputs:
- a = constant type
- where constant type is
-  a=0 180/PI
-  a=1 PI/2
-  a=2 PI/4
-  a=3 Log(e)
-  a=4 PI
-  a=5 PI/180
-  a=6 ln(10)


Outputs:
- OP1 = constant


Registers Destroyed:
 All

Comments:
After the BCALL:]]></symbol>
  <symbol name="_getconop2" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4240"><![CDATA[_getconop2

Loads one of seven different commonly used constants to OP2.

Inputs:
- a = constant type
- where constant type is
-  a=0 180/PI
-  a=1 PI/2
-  a=2 PI/4
-  a=3 Log(e)
-  a=4 PI
-  a=5 PI/180
-  a=6 ln(10)


Outputs:
- OP2 = constant


Comments:
After the BCALL:]]></symbol>
  <symbol name="_op1exptodec" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4252"><![CDATA[_op1exptodec

This routine sets OP2 to 1

Inputs:
- None


Outputs:
- OP2 = 1


Comments:
Simple enough to implement on your own if speed is important.]]></symbol>
  <symbol name="_fdiv100" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4261"><![CDATA[_fdiv100

Performs a fast divide by 100 on OP1. 

Inputs:
- OP1 = floating point number


Outputs:
- OP1 = OP1 / 100


Registers Destroyed:
 A

Comments:
This function divides OP1 by 100.  This is done by twice decrementing the exponent.  Checks are performed to prevent an underflow.  This is much faster than FPDiv when op2=100.]]></symbol>
  <symbol name="_fdiv10" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4264"><![CDATA[_fdiv10

Performs a fast divide by 10 on OP1. 

Inputs:
- OP1 = floating point number


Outputs:
- OP1 = OP1 / 10


Registers Destroyed:
 A

Comments:
This function divides OP1 by 10.  This is done by decrementing the exponent.  Checks are performed to prevent an underflow.  This is much faster than FPDiv when OP2=10.]]></symbol>
  <symbol name="_deco1exp" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4267"><![CDATA[_deco1exp

Decrements OP1's exponent.

Inputs:
- OP1 = floating point number


Outputs:
- OP1 's exponent decremented


Registers Destroyed:
 A

Comments:
This function decrements the exponent of OP1.  Unlike FDiv10, checks are not performed to prevent an underflow.]]></symbol>
  <symbol name="_inco1exp" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:426a"><![CDATA[_inco1exp

Increments OP1's exponent.

Inputs:
- OP1 = floating point number


Outputs:
- OP1 's exponent incremented


Registers Destroyed:
 A

Comments:
This function increments the exponent of OP1.  Checks are not performed to prevent an overflow.]]></symbol>
  <symbol name="_regeqname" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4282"><![CDATA[_regeqname

Sets OP1 to the name of the equation 'RegEq'.

Inputs:
- None


Outputs:
- OP1: set to variable name.


Registers Destroyed:
 AF,HL

Comments:
Simple enough to implement yourself.]]></symbol>
  <symbol name="_recurnname" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4285"><![CDATA[_recurnname

Sets OP1 to the name of the real variable 'n'.

Inputs:
- OP1: set to variable name.


Outputs:
- AF,HL


Comments:
None]]></symbol>
  <symbol name="_realname" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4291"><![CDATA[_realname

Sets OP1 to the name of a real variable given in the accumulator.

Inputs:
- A: The letter of the real variable


Outputs:
- OP1: set to variable name.


Registers Destroyed:
 HL

Comments:
This B_CALL is rather pointless.]]></symbol>
  <symbol name="_marktabledirty" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4297"><![CDATA[_marktabledirty

This BCALL checks if the name in OP1 has 24h in (OP1+1), and if so, calls FindSym on it and marks its VAT entry as "dirty" (setting bit 7 of the first byte of its VAT entry).

Inputs:
- OP1: name of variable


Outputs:
- Variable marked as dirty only if OP1+1 contained 24h
- Zero Flag: NZ if failure


Comments:
This BCALL sets bit 7 of the first byte in the variable's VAT entry. That might mean the variable is "dirty".  The 24h byte indicates a temporary variable.]]></symbol>
  <symbol name="_isa2bytetok" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:42a3"><![CDATA[_isa2bytetok

Determines if the token in register A is a two-byte token.

Inputs:
- A: First byte of potential two-byte token


Outputs:
- Z: set if A is the first byte of a two-byte token.


Comments:
None]]></symbol>
  <symbol name="_memchk" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:42e5"><![CDATA[_memchk

Returns the amount of free RAM, in bytes.

Inputs:
- None


Outputs:
- HL = RAM Available


Registers Destroyed:
 BC, HL

Comments:
The number returned may not be accurate if temporary variables exist that have been marked as dirty, but not yet deleted.]]></symbol>
  <symbol name="_chkfindsym" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:42f1"><![CDATA[_chkfindsym

Recalls various pointers and information for a symbol in the VAT.

Inputs:
- OP1 = Name of variable (with proper initial defining byte, see example)


Outputs:
- HL = VAT pointer
- DE = Data location (if in archive, will be address when page is put into bank A)
- B = Flash Page, or 0 if in RAM
- C = Length of Variable Name
- A = 'unknown'
- carry flag is set if the variable is not found in the VAT


Comments:
'All']]></symbol>
  <symbol name="_findsym" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:42f4"><![CDATA[_findsym

Searches the symbol table structure for a variable.

Inputs:
- (OP1 + 1) to (OP1 + 6) = variable name


Outputs:
- Carry Flag Set if found
- B = 0 if in Ram or ROM page
- HL = pointer to the start of the variables symbol table entry
- DE = pointer to the start of the variables data area if in RAM


Registers Destroyed:
 ALL

Comments:
This search routine is used to find variables that are not programs, AppVar, orGroups. This is used to determine if a variable is created and also to return pointers toboth its symbol table entry and data storage area.This will also indicate whether or not the variable is located in RAM or hasbeen archived in Flash ROM.]]></symbol>
  <symbol name="_insertmem" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:42f7"><![CDATA[_insertmem

Adds RAM space into an existing variable.

Inputs:
- HL = amount of RAM to insert into the variable
- DE = the memory address where the RAM will be inserted


Outputs:
- DE = the memory addressed where the RAM was inserted. Equivilant to the input.


Registers Destroyed:
 All]]></symbol>
  <symbol name="_insertmema" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:42fa"><![CDATA[_insertmema

Inserts memory to a given location without updating the VAT pointers

Inputs:
- HL = Number of bytes to insert
- DE = Location to insert memory


Outputs:
- HL,BC


Comments:
none]]></symbol>
  <symbol name="_enoughmem" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:42fd"><![CDATA[_enoughmem

Checks if a given amount of RAM is available. This routine will also attempt to free RAM that is taken by temporary variables that have been marked dirty but not yet deleted.

Inputs:
- HL = amount of RAM to check for being available


Outputs:
- DE = amount of RAM to check for being available
- Carry set if there is insufficient RAM available


Registers Destroyed:
 All

Comments:
No error is generated.]]></symbol>
  <symbol name="_createcplx" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:430c"><![CDATA[_createcplx

Creates a complex variable.

Inputs:
- OP1 = Name of complex variable


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
Only names from A-Z or Theta are allowed. You don't have to set (OP1) to 0Ch. The OS does this for you. (OP1+2) and (OP1+3) must be zero. No checks are made for duplicate/invalid names. If there isn't enough RAM a memory error will be generated.]]></symbol>
  <symbol name="_createreal" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:430f"><![CDATA[_createreal

Creates a real variable.

Inputs:
- OP1 = Name of real variable


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
Only names from A-Z or Theta are allowed. You don't have to set (OP1) to 00h. The OS does this for you. (OP1+2) and (OP1+3) must be zero. No checks are made for duplicate/invalid names. If there isn't enough RAM a memory error will be generated.]]></symbol>
  <symbol name="_createtemprlist" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4312"><![CDATA[_createtemprlist

Creates a temporary real list.

Inputs:
- HL = Number of elements


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there are 65536 temporarily variables or if there isn't enough RAM a memory error will be generated. Contents of the list are random.]]></symbol>
  <symbol name="_createrlist" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4315"><![CDATA[_createrlist

Creates a real list.

Inputs:
- HL = Number of elements
- OP1 = Name of list


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there isn't enough RAM a memory error will be generated. (OP1) doesn't have to be 01h. Contents of the list are random.]]></symbol>
  <symbol name="_createtclist" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4318"><![CDATA[_createtclist

Creates a temporary complex list.

Inputs:
- HL = Number of elements


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there are 65536 temporarily variables or if there isn't enough RAM a memory error will be generated. Contents of the list are random.]]></symbol>
  <symbol name="_createclist" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:431b"><![CDATA[_createclist

Creates a complex list.

Inputs:
- HL = Number of elements
- OP1 = Name of list


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there isn't enough RAM a memory error will be generated. (OP1) doesn't have to be 0Dh. Contents of the list are random.]]></symbol>
  <symbol name="_createtemprmat" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:431e"><![CDATA[_createtemprmat

Creates a temporarily real matrix.

Inputs:
- H = Rows
- L = Cols


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there are 65536 temporarily variables or if there isn't enough RAM a memory error will be generated. Contents of the matrix are random.]]></symbol>
  <symbol name="_creatermat" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4321"><![CDATA[_creatermat

Creates a real matrix.

Inputs:
- H = Rows
- L = Cols
- OP1 = Name of matrix


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there isn't enough RAM a memory error will be generated. (OP1) doesn't have to be 02h. (OP1+3) and (OP1+4) have to be zero. Contents of the matrix are random.]]></symbol>
  <symbol name="_createtempstring" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4324"><![CDATA[_createtempstring

Creates a temporary string.

Inputs:
- HL = Length in bytes


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there are 65536 temporary variables or if there isn't enough RAM a memory error will be generated. Contents of the string are random.]]></symbol>
  <symbol name="_createstrng" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4327"><![CDATA[_createstrng

Creates a string.

Inputs:
- HL = Length in bytes
- OP1 = Name of string


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there isn't enough RAM a memory error will be generated. (OP1) doesn't have to be 04h. (OP1+3) and (OP1+4) have to be zero. Contents of the string are random.]]></symbol>
  <symbol name="_create0equ" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:432a"><![CDATA[_create0equ

Creates an equation with zero length.

Inputs:
- OP1 = Name of equation


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there isn't enough RAM a memory error will be generated. (OP1) doesn't have to be 03h. (OP1+3) and (OP1+4) have to be zero. Contents of the equation are random.]]></symbol>
  <symbol name="_createtempequ" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:432d"><![CDATA[_createtempequ

Creates a temporarily equation.

Inputs:
- HL = Length in bytes


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there are 65536 temporarily variables or if there isn't enough RAM a memory error will be generated. Contents of the equation are random.]]></symbol>
  <symbol name="_createequ" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4330"><![CDATA[_createequ

Creates an equation.

Inputs:
- HL = Length in bytes
- OP1 = Name of equation


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there isn't enough RAM a memory error will be generated. (OP1) doesn't have to be 03h. (OP1+3) and (OP1+4) have to be zero. Contents of the equation are random.]]></symbol>
  <symbol name="_createpict" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4333"><![CDATA[_createpict

Creates a picture.

Inputs:
- OP1 = Name of picture


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there isn't enough RAM a memory error will be generated. A picture is always 756 (02F4h) bytes in length. (OP1) doesn't have to be 07h. (OP1+3) and (OP1+4) have to be zero. Contents of the picture are random.]]></symbol>
  <symbol name="_creategdb" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4336"><![CDATA[_creategdb

Creates a GDB.

Inputs:
- HL = Length in bytes
- OP1 = Name of GDB


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If there isn't enough RAM a memory error will be generated. (OP1) doesn't have to be 08h. (OP1+3) and (OP1+4) have to be zero. Contents of the GDB are random.]]></symbol>
  <symbol name="_createprog" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4339"><![CDATA[_createprog

Creates a program.

Inputs:
- HL = Length in bytes
- OP1 = Name of program


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If the length of name is shorter than 8 characters it must be zero-terminated. If there isn't enough RAM a memory error will be generated. (OP1) doesn't have to be 05h. Contents of the program are random.]]></symbol>
  <symbol name="_adjmath" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4345"><![CDATA[_adjmath

BCALL Address: 4345

Inputs:
- DE = Location in RAM where memory was inserted/deleted
- BC = Number of bytes to decrease each pointer by (use signed integer to increase the pointers)


Outputs:
- HL, F


Registers Destroyed:
 iMathPtr1

Comments:
Updates 23 pointers after memory has been inserted or deleted.]]></symbol>
  <symbol name="_delvar" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4351"><![CDATA[_delvar

Delete a variable.

Inputs:
- HL points to the VAT entry
- BDE points to the start of the data


Outputs:
- All registers


Comments:
None]]></symbol>
  <symbol name="_delmem" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4357"><![CDATA[_delmem

Deletes Ram from a Variable

Inputs:
- HL = Address of first byte
- DE = Number of bytes to delete


Outputs:
- DE = orginal number
- BC = number of bytes deleted


Comments:
All]]></symbol>
  <symbol name="_delvar3dc" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4360"><![CDATA[_delvar3dc

BCALL Address: 4360

Inputs:
- DE = Location in RAM where memory was inserted
- BC = Number of bytes to increase each VAT entry and pointer by (amount of memory inserted)


Outputs:
- The 23 pointers adjusted by AdjMath: iMathPtr1 iMathPtr2 iMathPtr3 iMathPtr4 iMathPtr5 asm_data_ptr1 asm_data_ptr2 fmtMatMem newDataPtr EQS 9319h 9302h insDelPtr 9306h 9311h editDat chkDelPtr1 XOutDat YOutDat fOutDat 84E7h inputDat chkDelPtr2
- fpBase
- FPS
- The 3 parser pointers adjusted by AdjParser: 965Bh 965Dh 965Fh
- tempMem


Comments:
Updates VAT and pointers after memory has been inserted]]></symbol>
  <symbol name="_isfixedname" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4363"><![CDATA[_isfixedname

This BCALL determines whether a variable's name has a fixed size or is of varying length.

Inputs:
- HL points to VAT entry's type byte


Outputs:
- NZ set if fixed name


Registers Destroyed:
 A

Comments:
Protected and unprotected programs, groups, and appvars have variable length names, while matrices, strings, pictures, GDBs, etc. have fixed names.]]></symbol>
  <symbol name="_delvarentry" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4366"><![CDATA[_delvarentry

This BCALL deletes the entry of a variable and adjusts pointers as necessary.

Inputs:
- DE points to VAT entry of variable
- BC is size of VAT entry (7 + name length)


Outputs:
- None


Registers Destroyed:
 pTemp

Comments:
In theory, this can be used to delete the variable's data as well. It updates the following pointers:]]></symbol>
  <symbol name="_poprealo1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4390"><![CDATA[_poprealo1

Retrieves 9 bytes from the Floating Point Stack (FPS)  and pushes them to OP1

Inputs:
- None


Outputs:
- OP1 is updated from the FPS


Comments:
See PushRealO1]]></symbol>
  <symbol name="_pushrealo1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:43ba"><![CDATA[_pushrealo1

Saves OP1 by pushing it onto the Floating Point Stack

Inputs:
- OP1 What to save


Outputs:
- OP is pushed


Comments:
See PopRealO1]]></symbol>
  <symbol name="_pushmcplxo1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:43cc"><![CDATA[_pushmcplxo1

Push a complex number onto the top of the Floating Point Stack.

Inputs:
- OP1 = real part
- OP2 = imaginary part


Outputs:
- FPS1 = real part
- FPST = imaginary part


Registers Destroyed:
 AF, BC, DE, HL

Comments:
When storing a complex number on the FPS, the real part is pushed first and the imaginary part second.]]></symbol>
  <symbol name="_pushmcplx" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:43cf"><![CDATA[_pushmcplx

Push a complex number onto the top of the Floating Point Stack.

Inputs:
- HL = address of a complex number in 22-byte format


Outputs:
- FPS1 = real part
- FPST = imaginary part


Registers Destroyed:
 AF, BC, DE, HL

Comments:
When storing a complex number on the FPS, the real part is pushed first and the imaginary part second.]]></symbol>
  <symbol name="_hlminus9" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4492"><![CDATA[_hlminus9

Subtracts nine from HL.

Inputs:
- HL: number


Outputs:
- HL: number - 9


Registers Destroyed:
 DE

Comments:
Yes, that's all.]]></symbol>
  <symbol name="_jerror" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:44d7"><![CDATA[_jerror

Description

Inputs:
- A contains error code (bit 7=1 for GoTo option)


Outputs:
- System error displayed or error handler called


Registers Destroyed:
 All

Comments:
This is a jump not a call.]]></symbol>
  <symbol name="_strcopy" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:44e3"><![CDATA[_strcopy

Copies a null-terminated string from one location to another.

Inputs:
- DE: address to copy the string to
- HL: string to copy


Outputs:
- DE: points to null terminator of destination string
- HL: points to null terminator of source string


Registers Destroyed:
 AF

Comments:
This B_CALL is basically the same as the standard C function strcpy.]]></symbol>
  <symbol name="_strcat" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:44e6"><![CDATA[_strcat

Concatenates (joins) the string pointed by HL to the end of the string pointed pointed by DE.

Inputs:
- DE: String to join to
- HL: String to copy


Outputs:
- DE: points to null terminator of concatenated string
- HL: points to null terminator of original string to be concatenated


Registers Destroyed:
 AF

Comments:
This B_CALL is the same as the standard C function strcat.]]></symbol>
  <symbol name="_snameeq" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:44f2"><![CDATA[_snameeq

Jumps to a specified address on a specified page.

Inputs:
- Push pointer to table entry before calling


Outputs:
- None


Comments:
Push the address of a B_CALL table entry before B_JUMPing to this entry point. Such an entry looks like this:]]></symbol>
  <symbol name="_putmap" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4501"><![CDATA[_putmap

Displays a character on screen in the large font at the current cursor location.

Inputs:
- A = TI-ASCII code of character to display


Outputs:
- character at coordinate (curRow, curCol)


Registers Destroyed:
 none

Comments:
This B_CALL displays, in large font, the character stored in A at the current cursor location without advancing the cursor.  The PutC entry point is similar except it advances the cursor.]]></symbol>
  <symbol name="_putc" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4504"><![CDATA[_putc

Displays a character on screen in the large font at the current cursor location and advances the cursor position.

Inputs:
- A = TI-ASCII code of character to display


Outputs:
- character at coordinate (curRow, curCol)


Registers Destroyed:
 none]]></symbol>
  <symbol name="_puts" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:450a"><![CDATA[_puts

Displays a string on the screen in the large font.

Inputs:
- (curRow, curCol): Position on screen of first character
- HL: Zero-terminated string


Outputs:
- String displayed on screen
- HL points to character after terminating zero of string


Comments:
None]]></symbol>
  <symbol name="_wputseol" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4522"><![CDATA[_wputseol

Displays a string, putting an ellipsis (an ...) on the end of row if needed.

Inputs:
- HL = String to display.


Outputs:
- Kirk Meyer: For hinting on the use of this B_CALL.


Comments:
None]]></symbol>
  <symbol name="_newline" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:452e"><![CDATA[_newline

Move cursor to beginning of next line and scroll the display if necessary

Inputs:
- set appAutoScroll, (IY+appFlags) to scroll if needed


Outputs:
- textScrolled, (IY+textFlags) set if display scrolled
- curRow is incremented if display does not scroll.
- curCol = 0.


Registers Destroyed:
 All

Comments:
This is the same as TI-Basic Disp command in the fact that it sets a new line up.]]></symbol>
  <symbol name="_clrlcdfull" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4540"><![CDATA[_clrlcdfull

Clears the display, ignoring any split-screen settings.

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All]]></symbol>
  <symbol name="_clrlcd" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4543"><![CDATA[_clrlcd

Clears the non-graphing part of the screen, as opposed to its counterpart, ClrLCDFull, which clears the entire screen.

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All]]></symbol>
  <symbol name="_clrwindow" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:454f"><![CDATA[_clrwindow

Clears the windows, as defined by winTop and winBtm, on the screen.  Also clears equivilant parts of textShadow if appTextSave flag is set.

Inputs:
- appTextSave,(iy+appFlags): set to clear area in textShadow as well.
- winTop: Top of window area.
- winBtm: Bottom of window area.


Outputs:
- AF, BC, DE, HL


Comments:
None]]></symbol>
  <symbol name="_homeup" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4558"><![CDATA[_homeup

Sets the cursor to the top left corner of the window.

Inputs:
- winTop: top of current window


Outputs:
- curRow: set to top edge of current window
- curCol: set to left edge of current window


Comments:
None]]></symbol>
  <symbol name="_vputmap" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:455e"><![CDATA[_vputmap

Displays a character on screen in the small variable-width font at the current cursor location.

Inputs:
- A = TI-ASCII code of character to display


Outputs:
- character at coordinate (penRow, penCol)


Registers Destroyed:
 A, DE, IX

Comments:
This B_CALL outputs the character stored in A at the current cursor location.  Unlike its large-font equivalent PutMap, it updates the cursor, and the coordinates are measured in pixels instead of characters and lines.]]></symbol>
  <symbol name="_vputs" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4561"><![CDATA[_vputs

Displays text using the either the large or small font at any coordinates.

Inputs:
- HL: Pointer to string in RAM.
- penCol and penRow are the location
- The following flags function as defined: textInverse, (IY + textFlags) (reverse text) textEraseBelow, (IY + textFlags) textWrite, (IY + sGrFlags) (write to graph buffer; do not update screen) fracDrawLFont, (IY + fontFlags) (use large font)


Outputs:
- The text is displayed.
- Flags: The SDK is wrong. AF is restored before the routine returns so the carry flag is whatever you left it at. If you need to know whether or not the string went past the end of the screen, use the VPutS clone documented in the System Routines guide with push af and pop af omitted.
]]></symbol>
  <symbol name="_runindicon" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:456d"><![CDATA[_runindicon

Draws the Run Indicator and turns it on.

Inputs:
- None


Outputs:
- Run Indicator displayed
- indicRun,(iy+indicFlags) set
- indicBusy is set to E1


Registers Destroyed:
 None

Comments:
Interrupts are enabled.]]></symbol>
  <symbol name="_runindicoff" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4570"><![CDATA[_runindicoff

Removes the Run Indicator and turns it off.

Inputs:
- None


Outputs:
- Run Indicator removed from screen
- indicRun,(iy+indicFlags) reset


Registers Destroyed:
 AF

Comments:
Interrupts are enabled.]]></symbol>
  <symbol name="_get_tok_strng" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4594"><![CDATA[_get_tok_strng

Gets the string used for displaying a particular token.

Inputs:
- HL = pointer to token


Outputs:
- A = length of string
- BC = length of string
- OP3 = String which can be used to display the token


Registers Destroyed:
 A, DE, BC

Comments:
This does not set HL=OP3 like TI's developer guide claims.  In OS v1.18, HL is preserved.]]></symbol>
  <symbol name="_dispdone" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:45b5"><![CDATA[_dispdone

Description

Inputs:
- (curRow) = set to a valid row.


Outputs:
- None


Registers Destroyed:
 HL

Comments:
This routine checks if a Localize Hook is active. If it is, it's called with A=0Dh.]]></symbol>
  <symbol name="_cursoroff" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:45be"><![CDATA[_cursoroff

Removes the cursor from the display and stops it from reappearing until CursorOn is called.

Inputs:
- none


Outputs:
- curAble,(iy+curFlags) reset
- curOn,(iy+curFlags) reset
- curTime: 32h


Registers Destroyed:
 All]]></symbol>
  <symbol name="_cursoron" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:45c4"><![CDATA[_cursoron

Turns the Cursor On.  

Inputs:
- none


Outputs:
- curAble,(iy+curFlags) set
- curOn,(iy+curFlags) set
- curunder is the character being covered
- curTime: 32h


Registers Destroyed:
 All]]></symbol>
  <symbol name="_pulldownchk" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:45cd"><![CDATA[_pulldownchk

Checks for and processes any keys relating to menus.

Inputs:
- A = key press


Outputs:
- Carry flag set if menu requires further keypresses.
- Carry flag reset if a final keypress is returned in A (might be the same as the original keypress)


Comments:
Calling this immediately after GetKey will allow OS menus to appear during execution of your program.  The output of this routine may be an unprocessed key or it may be the result of a menu action.  For instance if a=kenter was sent to this routine while entry 2 is highlighted in the Draw menu, the output of this routine would be a=kLine.]]></symbol>
  <symbol name="_prevcontext" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4600"><![CDATA[_prevcontext

Sets up memory to switch to the previous context (essentially copying cxPrev to cxMain), if possible.

Inputs:
- None


Outputs:
- cxPrev vectors copied over cxMain vectors


Registers Destroyed:
 Unknown

Comments:
This function considers split screen modes if grfSplitOverride,(iy+sGrFlags) is not set.]]></symbol>
  <symbol name="_comparecontext" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4603"><![CDATA[_comparecontext

Compares cxCurApp value in A to predefined list.

Inputs:
- A is cxCurApp value to compare against


Outputs:
- Z set if cxCurApp value is in list


Comments:
The complete code for this BCALL (OS 2.41) is below.]]></symbol>
  <symbol name="_sfont_len" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4786"><![CDATA[_sfont_len

Returns the width of a small font character.

Inputs:
- HL: Index into font data table. Multiply the character's code by eight to get this.


Outputs:
- B: Font width.
- A: The SDK is wrong. A only contains the width if a localize or font hook is active and wants to intercept the call.


Registers Destroyed:
 AF, BC, DE, HL

Comments:
Get the width of the character in A:]]></symbol>
  <symbol name="_iline" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:47e0"><![CDATA[_iline

Draws a line on the graph screen.

Inputs:
- B: X-coordinate of first point (0-95)
- C: Y-coordinate of first point (0-63)
- D: X-coordinate of second point (0-95)
- E: Y-coordinate of second point (0-63)
- H: type of line to draw (0 for off, 1 for on, 2 to invert)
- set fullScrnDraw,(iy+apiFlg4) to use column 95 and row 0
- reset plotLoc,(iy+plotFlags) to draw to both display and plotSScreen
- set bufferOnly,(iy+plotFlag3) to draw to plotSScreen only


Outputs:
- None


Registers Destroyed:
 None

Comments:
This routine is affected by the Graphics Hook, if enabled.]]></symbol>
  <symbol name="_grbufcpy" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:486a"><![CDATA[_grbufcpy

Copies the data at plotSScreen to the LCD.

Inputs:
- plotSScreen: Graph buffer


Outputs:
- Buffer sent to screen


Registers Destroyed:
 All

Comments:
For a faster graph-buffer-to-screen copy routine, see Fastcopy.]]></symbol>
  <symbol name="_regraph" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:488e"><![CDATA[_regraph

ReGraphs the equations in the current graph setting and any statplots.

Inputs:
- set smartGraph_inv, (IY + smartFlags) to force all equations to be regraphed, not just new ones.
- Any Graph Window Settings


Outputs:
- None


Comments:
This is affected by Split Screen Modes.  See ForceFullScreen to get rid of this problem.]]></symbol>
  <symbol name="_putxy" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:489d"><![CDATA[_putxy

Displays the values of X,Y and other variables on the graph screen.

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All

Comments:
This B_CALL will display the variables on the screen you see when tracing. It depends on the graphing mode and the format settings which variables will be displayed.]]></symbol>
  <symbol name="_putsm" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:48d9"><![CDATA[_putsm

Displays zero-terminated string at HL and returns whether text went past the bottom right corner of the screen.

Inputs:
- HL = pointer to zero-terminated string to display


Outputs:
- C = set if text did NOT go beyond bottom right corner of screen


Registers Destroyed:
 HL

Comments:
This is exactly the same as PutS except that it returns with carry set if the text did NOT display beyond the bottom right corner of the screen.]]></symbol>
  <symbol name="_dispeow" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4957"><![CDATA[_dispeow

Display text from editTail at cursor position until the end of the window.

Inputs:
- editTail: text to display.
- winBtm: bottom of window.
- curRow: screen row to print text
- curCol: screen column to print text


Outputs:
- AF, BC, DE, HL


Comments:
None]]></symbol>
  <symbol name="_disphead" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:495a"><![CDATA[_disphead

Displays text starting at editCursor and going backwards to editTop.  This entry point moves in reverse, both on the display and in memory.

Inputs:
- editCursor: points to location in edit buffer
- editTop: points to top of edit buffer
- curRow: screen row to print text
- curCol: screen column to print text


Outputs:
- editCursor: will now point to same location as editTop.


Registers Destroyed:
 AF, BC, DE, HL

Comments:
This entry point is used to scroll all the way back to the beginning of the edit buffer.  This is used, for example, when the clear button is pressed in TIOS: If you have a lot of text in the buffer you'll see it all whiz by as it scrolls back to the beginning.]]></symbol>
  <symbol name="_disptail" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:495d"><![CDATA[_disptail

Displays the tokens from editTail to editBtm.  Also move the editCursor to the end of the edit buffer.

Inputs:
- editTail: set appropriately
- editBtm: set to end of edit buffer


Outputs:
- editTail: will be set to editBtm.
- editCursor: will be updated


Registers Destroyed:
 AF, BC, DE, HL]]></symbol>
  <symbol name="_getkey" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4972"><![CDATA[_getkey

The standard key input routine.

Inputs:
- bit lwrCaseActive, (iy+appLwrCaseFlag) set to enable lowercase entry
- bit 7, (iy+28h) set to disable the usual action of 2nd+Off
- (iy+shiftFlags) contains shift settings


Outputs:
- A = keycode
- (keyExtend) = extended keycode
- bit onInterrupt, (iy+onFlags) set (and A=0) if the On key was pressed
- (iy+shiftFlags) contains shift settings


Registers Destroyed:
 DE, HL

Comments:
This routine will wait for a key to be pressed and return it.  It will handle the 2nd and Alpha keys, and the values it returns reflect this distinction.]]></symbol>
  <symbol name="_formdisp" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:497e"><![CDATA[_formdisp

Displays the value in OP1.

Inputs:
- OP1: Any printable TI-BASIC value.


Outputs:
- Value converted to string and displayed


Comments:
This B_CALL is essentially equivalent to the BASIC Disp function.]]></symbol>
  <symbol name="_op1toedit" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:49a5"><![CDATA[_op1toedit

Inserts the floating point in op1 into an edit buffer.

Inputs:
- op1 = floating point number


Outputs:
- edit buffer pointers are updated
]]></symbol>
  <symbol name="_setupdispeq" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:49d2"><![CDATA[_setupdispeq

Executes FindSym and calculates the end address of the variable.

Inputs:
- OP1: Variable name 


Outputs:
- HL: Points to end of variable
- DE: Points to start of variable data
- Other outputs are the same as FindSym


Comments:
This B_CALL can be useful if you want to access the end of a variable. Equivalent code located in example.]]></symbol>
  <symbol name="_dispforward" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:49d5"><![CDATA[_dispforward

Displays a string of tokens in large font.

Inputs:
- DE: pointer to beginning of token string
- HL: pointer to byte after string of tokens.
- curRow: screen row to print text
- curCol: screen column to print text


Outputs:
- curRow: Updated 
- curCol: Updated


Registers Destroyed:
 AF, BC, DE, HL

Comments:
Auto scroll is temporarily turned off during this entry point.]]></symbol>
  <symbol name="_disperrorscreen" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:49de"><![CDATA[_disperrorscreen

Displays the ERR:... text for a specified error number.

Inputs:
- (errNo): The error number


Outputs:
-All


Comments:
None]]></symbol>
  <symbol name="_setyoffset" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:49ff"><![CDATA[_setyoffset

Sets up YOffset, lcdTallP, pixWideP, pixWide_m_1, and pixWide_m_2 to predefined values.

Inputs:
- None


Outputs:
- YOffset = 12
- lcdTallP = 52
- pixWideP = 48
- pixWide_m_1 = 47
- pixWide_m_2 = 46


Registers Destroyed:
 HL,DE,BC

Comments:
It makes a smaller graph screen]]></symbol>
  <symbol name="_convkeytotok" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a02"><![CDATA[_convkeytotok

Converts a key into it's corresponding token.

Inputs:
- A: The key code
- keyExtend: The second byte of the key code if it's an extended key code


Outputs:
- DE: Contains the token, D will be zero for a one byte token.


Registers Destroyed:
 All

Comments:
The code below will display Ã¢â‚¬Ëœ1Ã¢â‚¬â„¢ at the cursor location.]]></symbol>
  <symbol name="_toktokey" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a0b"><![CDATA[_toktokey

Converts a token to a key press.

Inputs:
- If one byte token,
-  D = 0 
-  E = token value
- If two byte token,
-  D = first byte of token
-  E = second byte of token


Outputs:
- A = first byte of key
- (keyExtend) = second byte of key press, if it exists


Registers Destroyed:
 BC,DE,HL]]></symbol>
  <symbol name="_sendskipexitpacket" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a0e"><![CDATA[_sendskipexitpacket

Sends the skip/exit packet through the link port and receives an acknowledgement packet.

Inputs:
- A: skip/exit code (1 for exit, 2 for skip, 3 for out-of-memory, etc.)
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_getvarcmd" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a11"><![CDATA[_getvarcmd

Sends a silent link request to another calculator and receives a variable to RAM.

Inputs:
- (sndRecState): 15h
- OP1: type and name of variable to request (this must be zero'd out)
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will not throw any errors if there were problems.]]></symbol>
  <symbol name="_sendvarcmd" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a14"><![CDATA[_sendvarcmd

Sends a variable to a computer via a silent link request.

Inputs:
- OP1: type and name of variable to send


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will not throw an error if there are any problems. However, it will fail to send the variable if the receiving device has a machine ID of 82, 83h, or 73h.]]></symbol>
  <symbol name="_sendscreenshot" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a17"><![CDATA[_sendscreenshot

Sends a screenshot of the current LCD contents to a computer.

Inputs:
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will not throw an error if there are any problems. However, it will fail to send the screenshot if the machine ID of the receiving device is not 03h or 13h.]]></symbol>
  <symbol name="_deselectallvars" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a1d"><![CDATA[_deselectallvars

Resets bit 7 of every variable's type byte in its symbol table entry. Bit 7 is used to determine whether the variable is selected in the new group and send/receive link contexts.

Inputs:
- None


Outputs:
- Bit 7 of every variable's type byte is reset


Registers Destroyed:
 All

Comments:
This routine also resets bit 7 of each of the 35 bytes at 8694h. If the calculator is anything other than the 83+ Basic, it will also zero out the 32 bytes at 8697h, for whatever reason.]]></symbol>
  <symbol name="_convlctolr" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a23"><![CDATA[_convlctolr

Takes complex list name in OP1 and converts it to a real list of the same name (by deleting the imaginary part from each component).

Inputs:
- OP1 = list to make real


Outputs:
- List is now real
- (OP1) = 01h


Comments:
This entry point will throw ERR:ARCHIVED if the list is archived or ERR:UNDEFINED if the list cannot be found.]]></symbol>
  <symbol name="_movetonextsym" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a53"><![CDATA[_movetonextsym

Finds the next entry in the symbol table.

Inputs:
- HL: points to type byte of current symbol table entry


Outputs:
- HL: points to type byte of next symbol table entry


Registers Destroyed:
 AF, DE

Comments:
This routine can be used to traverse both the program/list and the regular symbol tables.  It does not do bound checking, so you must check if HL equals the value at pTemp yourself to see if you've reached the end of the table.  The example below browses the entire symbol table.]]></symbol>
  <symbol name="_zifrclhandler" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a65"><![CDATA[_zifrclhandler

Returns whether or not a Rcl handler (the function that occurs when you press 2nd+Rcl) is currently active.

Inputs:
- Zero Flag: Set if Rcl handler is active, reset otherwise.


Outputs:
- DE, HL


Comments:
None]]></symbol>
  <symbol name="_zifrclkapp" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a68"><![CDATA[_zifrclkapp

Checks if a Rcl handler is active with some odd exceptions. See the Comments for details.

Inputs:
- A: Context ID


Outputs:
- Zero Flag: Set if Rcl handler active.


Comments:
If cxCurApp is equal to the context you pass in A, this routine will return with zero reset. It will always return with zero reset if A is cxCmd.]]></symbol>
  <symbol name="_rclkeyrtn" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a6b"><![CDATA[_rclkeyrtn

BCALL Address: 4A6B

Inputs:
-Displays RCL in the lower Left


Outputs:
-HL,DE


Comments:
Sets up the monitor vectors for Rcl mode.]]></symbol>
  <symbol name="_rclkey" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a6b"><![CDATA[_rclkey

BCALL Address: 4A6B

Inputs:
-Displays RCL in the lower Left


Outputs:
-HL,DE


Comments:
Sets up the monitor vectors for Rcl mode.]]></symbol>
  <symbol name="_clrtr" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a7d"><![CDATA[_clrtr

Checks for and processes any keys relating to the catalog.

Inputs:
- A = key press


Outputs:
- A = key press (might not be the same)


Registers Destroyed:
 BC

Comments:
Calling this immediately after GetKey will allow the OS catalog to appear during execution of your program.  The output of this routine may be an unprocessed key or it may be the result of a catalog action.  For instance if a=kenter was sent to this routine while the cursor is next to 'and', the output of this routine would be a=kextendecho and (keyExtend)=kAnd.]]></symbol>
  <symbol name="_write_text" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4a8f"><![CDATA[_write_text

Displays an equation in small font, in the same way as equations are shown during tracing.

Inputs:
- BC: Length of the equation
- HL: Address of first token in equation
- bit 3, (iy + 11): Set to stop at middle of screen (can be used to display two equations)


Outputs:
- The equation is displayed
]]></symbol>
  <symbol name="_rclvarsym" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ae3"><![CDATA[_rclvarsym

Recalls the value of a TI-OS variable.

Inputs:
- OP1 = Name of variable


Outputs:
- OP1 = Contents of Variable
- possibly others, please add if known


Comments:
Unknown]]></symbol>
  <symbol name="_convop1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4aef"><![CDATA[_convop1

Converts a floating-point number in OP1 to a two-byte hexadecimal number in DE.

Inputs:
- OP1 = Floating Point Number in standard TI-OS decimal format.


Outputs:
- A = Least SIgnificant Byte Value
- DE = Hex Value


Comments:
This information was supplemented by the Detached Solutions forum site.This routine is used to convert a floating-point number OP1 to a hex value in DE, but if the number in OP1 is greater than 9999, an error will occur.  The same is thought to happen with decimal numbers; once discovered, more documentation will appear on this ROM call.]]></symbol>
  <symbol name="_erroncertaintypes" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4b0a"><![CDATA[_erroncertaintypes

Throws ERR:DATA TYPE if A is type program, protected program, picture, GDB, or anything above 0Eh.

Inputs:
- A: type to check


Outputs:
- None


Registers Destroyed:
 None

Comments:
It will never throw an error if A is 0FFh.]]></symbol>
  <symbol name="_createpair" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4b0d"><![CDATA[_createpair

Creates an equation pair (parametric).

Inputs:
- HL = Length in bytes
- OP1 = Name of equation


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name of the member not specified.
- OP1 contains the name specified


Registers Destroyed:
 AF,BC,OP2

Comments:
The specified equations is created with size HL. The other member of the pair is created with zero-length. If there isn't enough RAM a memory error will be generated. (OP1) doesn't have to be 03h. (OP1+3) and (OP1+4) have to be zero. Contents of the equations are random.]]></symbol>
  <symbol name="_ansname" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4b52"><![CDATA[_ansname

Gives the name of Ans.

Inputs:
- None


Outputs:
- (OP1) contains 00h,72h,00h,00h,00h,00h,00h,00h,00h


Registers Destroyed:
 AF,HL

Comments:
Simple enough to implement yourself.]]></symbol>
  <symbol name="_incfetch" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4b73"><![CDATA[_incfetch

Fetches the next byte the BASIC parser would read and increments the pointer to the next byte by one.

Inputs:
- NextParseByte: Pointer to the byte to fetch


Outputs:
- NextParseByte: Pointer incremented by one.
- A: The byte NextParseByte is now pointing to.
- Carry flag set if you're at the end of the program.


Registers Destroyed:
 BC, HL

Comments:
This B_CALL fetches the next byte the parser hasn't parsed yet and sets the pointer to the next byte that should be parsed one forward. It is used internally in the parser and is useful inside the parser hook.]]></symbol>
  <symbol name="_randinit" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4b7f"><![CDATA[_randinit

Initialize random generator's seeds to default values.

Inputs:
- seed1: 12345
- seed2: 67890


Outputs:
- BC, DE, HL


Comments:
None]]></symbol>
  <symbol name="_resetstacks" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4b82"><![CDATA[_resetstacks

BCALL Address: 4B82

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 HL

Comments:
Deletes all data from the operator and floating-point stacks, and removes all error handlers (except the standard system error handler.)]]></symbol>
  <symbol name="_grbufclr" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4bd0"><![CDATA[_grbufclr

BCALL Address: 4BD0h

Inputs:
- None


Outputs:
- 768 bytes at plotSScreen are set to 0.


Registers Destroyed:
 BC, DE, HL

Comments:
Clears the memory location plotSScreen.]]></symbol>
  <symbol name="_startdialog" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c03"><![CDATA[_startdialog

Starts a dialog at appData created with DialogInit

Inputs:
- appData: menu structure.


Outputs:
- Starts Dialog


Registers Destroyed:
 Use DialogInit to set up, ]]></symbol>
  <symbol name="_dialoginit" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c06"><![CDATA[_dialoginit

Initializes the dialog context at appData.

Inputs:
- HL: is address of parser callback for any numbers entered.
- A: is page of parser callback for any numbers entered (must be non-zero).
- appData: menu structure.


Outputs:
- Initializes the dialog context.


Registers Destroyed:
 Use StartDialog to start Dialog]]></symbol>
  <symbol name="_getdialognumop1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c09"><![CDATA[_getdialognumop1

Gets a floating-point number from the dialog context to OP1.

Inputs:
- A: a zero-based index of number.


Outputs:
- OP1: the number .


Registers Destroyed:
 Use with the other Dialog BCALLs.]]></symbol>
  <symbol name="_setdialognumop1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c0c"><![CDATA[_setdialognumop1

Sets a floating-point number in the dialog context to the value in OP1.

Inputs:
- A: a zero-based index of number.
- OP1: The number.


Outputs:
- The is number stored.


Registers Destroyed:
 Use with the other Dialog BCALLs.]]></symbol>
  <symbol name="_getdialognumhl" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c0f"><![CDATA[_getdialognumhl

Gets the address of a floating-point number from the dialog context.

Inputs:
- A: a zero-based index of number.


Outputs:
- HL: points to number.


Registers Destroyed:
 Use with the other Dialog BCALLs.]]></symbol>
  <symbol name="_setdialogkeyoverride" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c15"><![CDATA[_setdialogkeyoverride

Sets a callback routine to handle keypresses.

Inputs:
- A: page of callback routine..
- HL: address of callback routine.


Outputs:
- none


Registers Destroyed:
 Keys kSolveRoot (SOLVE EDITOR), kStatEd (list editor), and kInfStat (inferential statistic editor) are not passed to this routine. It is up to you to handle everything else, including [UP], [DOWN], [ENTER], and [2nd]+[QUIT].

Comments:
Bit 1,(iy+28h) set is probably an indicator to this routine that the user attempted to press a context key.]]></symbol>
  <symbol name="_resdialogkeyoverride" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c18"><![CDATA[_resdialogkeyoverride

Disables the callback routine to handle keypresses.

Inputs:
- none


Outputs:
- none


Registers Destroyed:
 Use with the other Dialog BCALLs.]]></symbol>
  <symbol name="_forcedialogkeypress" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c1b"><![CDATA[_forcedialogkeypress

Forces a key to be pressed on dialog menu. It doesn't return and waits for another keypress.

Inputs:
- A: a keypress (and potentially (keyExtend)).


Outputs:
- This doesn't return.


Registers Destroyed:
 Use with the other Dialog BCALLs.]]></symbol>
  <symbol name="_dialogstartgetkey" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c1e"><![CDATA[_dialogstartgetkey

Waits for a dialog keypress and then acts on it.

Inputs:
- HL: address of a table


Outputs:
- This doesn't return until you press [2nd]+[QUIT]


Registers Destroyed:
  This doesn't return until you press [2nd]+[QUIT]. You pass the address of a table in HL...if you pass a bID=3 table, it just returns. And the dialog has presumably already been displayed. It doesn't use the table for anything other than this, which is odd.]]></symbol>
  <symbol name="_startdialog_override" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c21"><![CDATA[_startdialog_override

Calls SetDialogOverride, then StartDialog.

Inputs:
- appData: menu structure.


Outputs:
- Starts Dialog


Registers Destroyed:
 Calls SetDialogOverride, then StartDialog.]]></symbol>
  <symbol name="_calldialogcallback" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c24"><![CDATA[_calldialogcallback

Calls the dialog callback routine.

Inputs:
- none 


Outputs:
- none


Registers Destroyed:
 This apparently is never used by the OS.]]></symbol>
  <symbol name="_setdialogcallback" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c27"><![CDATA[_setdialogcallback

Sets a callback routine which can be called by you at any point.

Inputs:
- HL: address of callback routine.
- A: page of callback routine.


Outputs:
- callback routine is set up


Registers Destroyed:
 Use with the other Dialog BCALLs.]]></symbol>
  <symbol name="_resdialogcallback" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c2a"><![CDATA[_resdialogcallback

Disables the dialog callback routine.

Inputs:
- none


Outputs:
- none


Registers Destroyed:
 Use with the other Dialog BCALLs.]]></symbol>
  <symbol name="_copydialognum" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c2d"><![CDATA[_copydialognum

Copies one floating-point number from the dialog context to another.

Inputs:
- B: zero-based index of source number.
- C: zero-based index of destination number.


Outputs:
- Number C overwritten by number B.


Registers Destroyed:
 Use with the other Dialog BCALLs.]]></symbol>
  <symbol name="_memclear" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c30"><![CDATA[_memclear

Sets a block of memory to zero.

Inputs:
- HL: Address of memory block.
- BC: Number of bytes to zero.


Outputs:
- DE: Points to byte after memory block.


Registers Destroyed:
 AF, BC, HL

Comments:
This routine uses an LDIR instruction to clear the memory block, so do not pass it a block length of 0 or 1 or it will erase 65536 bytes.]]></symbol>
  <symbol name="_executenewprgm" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c3c"><![CDATA[_executenewprgm

Creates a new program, fills it with data, and then executes it.

Inputs:
- A: type of variable to create (05h for programs, 06h for protected programs)
- HL: pointer to structure (described below)


Outputs:
- None


Registers Destroyed:
 All

Comments:
The structure which this routine takes as argument is shown below.]]></symbol>
  <symbol name="_vputmaprec" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c42"><![CDATA[_vputmaprec

Displays the character data at sFont_record at the current screen coordinates (the same as VPutMap).

Inputs:
- sFont_record = character data
- penRow = row to display at
- penCol = column to display at


Outputs:
- Character is displayed


Comments:
This routine works exactly the same as VPutMap except that it uses the character data at sFont_record instead of a character equate in A. In theory, this means you can draw any character or sprite you can think up (within reason).]]></symbol>
  <symbol name="_getrompage" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c45"><![CDATA[_getrompage

BCALL Address: 4C45

Inputs:
- A: the flash page in the 4000-7FFF slot


Outputs:
- Michael Vincent: For discovering this B_CALL.


Comments:
Returns the flash page in the 4000-7FFF slot.]]></symbol>
  <symbol name="_executeapp" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c51"><![CDATA[_executeapp

Executes a flash application.

Inputs:
- progToEdit: Name of the application to start.


Outputs:
- Michael Vincent: For documenting this B_CALL.


Comments:
None]]></symbol>
  <symbol name="_monreset" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c54"><![CDATA[_monreset

Resets window settings, loads dummy returns to all cxMain vectors, and clears several flags.

Inputs:
- None


Outputs:
- winTop, winLeft, winBtm set to fullscreen values
- Address pointing to "ret" loaded to all six context vectors


Registers Destroyed:
 JMan: For speculation about this B_CALL

Comments:
This B_CALL is called upon exiting an app. Speculation is that it is some kind of cleanup after executing an app. Built-in and other external apps might not change all the context vectors, and this B_CALL could take care of that.]]></symbol>
  <symbol name="_disableapd" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c84"><![CDATA[_disableapd

Disables the Automatic Power Down

Inputs:
- None


Outputs:
- apdAble, (IY + apdFlags) is reset


Registers Destroyed:
 None

Comments:
You should reenable APD before your program ends.  Look at EnableAPD.]]></symbol>
  <symbol name="_enableapd" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c87"><![CDATA[_enableapd

(Re)Enables the Automatic Power Down

Inputs:
- None


Outputs:
- apdAble, (IY + apdFlags) is set


Registers Destroyed:
 None

Comments:
The TIÃ¢Ë†â€™83 Plus will now power down if not used in aboutfour minutes.]]></symbol>
  <symbol name="_apdsetup" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c93"><![CDATA[_apdsetup

Resets the APD counter

Inputs:
- None


Outputs:
- (apdTimer) = 74


Registers Destroyed:
 HL

Comments:
Simply enough to implement yourself.The code is:]]></symbol>
  <symbol name="_get_numkey" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c96"><![CDATA[_get_numkey

Waits for a number key to be pressed (Except for zero) Doesn't return when a non number key is pressed.

Inputs:
- None


Outputs:
- A: the GetCSC code of the key pressed


Registers Destroyed:
 Michael Vincent: For documenting this B_CALL]]></symbol>
  <symbol name="_appsetup" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c99"><![CDATA[_appsetup

Cleans up flags and hooks before running a Flash application.

Inputs:
- Set bit in iy+37h, iy+38h, and iy+39h corresponding to iy+34h, iy+35h, and iy+36h hook to uninstall that hook


Outputs:
- bufferOnly,(iy+plotFlag3) reset
- appRunning,(iy+APIFlg) reset
- textFlags, APIFlg, apiFlg2, apiFlg3, apiFlg4, iy+37h/38h/39h all zeroed out


Registers Destroyed:
 All

Comments:
Run Flash application "MyApp" without the GetCSC hook:]]></symbol>
  <symbol name="_handlelinkkeyactivity" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4c9c"><![CDATA[_handlelinkkeyactivity

Allows for interrupts to handle any link activity.

Inputs:
- (9C86): 0 for no activity so far


Outputs:
- 7,(iy+3Dh) set if linking error


Registers Destroyed:
 None

Comments:
This basically enables interrupts and HALTs if no link activity is currently going on.]]></symbol>
  <symbol name="_emptyhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ce1"><![CDATA[_emptyhook

This adds register E to register A and stores it in A, I guess.

Inputs:
- E: value to add to A
- A: value to be added to E


Outputs:
- A: A+E


Registers Destroyed:
 A

Comments:
If you call this entry point, it will actually run the "add a,e" identifier.]]></symbol>
  <symbol name="_clearrow" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ced"><![CDATA[_clearrow

Clears eight consecutive LCD display drive rows

Inputs:
- A = LCD display driver row coordinate (0x80 â€“ 0xBF) 


Outputs:
- Eight pixel rows cleared 
- Driver left in X increment mode (the default)


Registers Destroyed:
 AF, B, DE

Comments:
This routine requires A to be in LCD display driver row (X) coordinates, which have a valid range between 0x80 â€“ 0xBF, with the top pixel row equalto 0x80 and the bottom pixel row equal to 0xBF. Passing in a value for A outside this range will cause unpredictable results and probably a lockup. This routine erases eight consecutive rows, so if you pass in A = 0x88, the 9th â€“ 16th pixel rows from the top of the display are erased. If you pass in a value between 0xB9 â€“ 0xBF, the erased rows wrap back to the top of the display. In normal usage, if you are erasing a line of large text, the A value should be a multiple of 0x08.]]></symbol>
  <symbol name="_errcustom1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4d41"><![CDATA[_errcustom1

Displays a custom ERR: message.

Inputs:
- appErr1: zero-terminated string to display after "ERR:"


Outputs:
- None


Registers Destroyed:
 A

Comments:
This BCALL will display "ERR:" and then the zero-terminated string at appErr1. There will never be a GoTo option and it does not return.]]></symbol>
  <symbol name="_errcustom2" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4d44"><![CDATA[_errcustom2

Displays a custom ERR: message.

Inputs:
- appErr2: a zero-terminated string to display after "ERR:"


Outputs:
- None


Registers Destroyed:
 A

Comments:
This BCALL will display "ERR:" and then the zero-terminated string at appErr2. There will never be a GoTo option and it does not return.]]></symbol>
  <symbol name="_appstartmouse" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4d47"><![CDATA[_appstartmouse

Initializes mouse, displays mouse cursor on screen, and waits for a keypress.

Inputs:
- None


Outputs:
- A: 0Ah if arrow key pressed, 0Ch if enter key pressed
- 986D: Current mouse cursor coordinates
- Cursor turned off
- Run indicated turned off
- Mouse cursor displayed at center of LCD


Registers Destroyed:
 BC, DE, HL

Comments:
This entry point does not clear the screen before displaying the mouse cursor.  It waits for a keypress, but only responds to the arrow keys and the enter key.  Use the AppUpdateMouse entry point to update the cursor on the screen and wait for another keypress.]]></symbol>
  <symbol name="_apperasemouse" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4d53"><![CDATA[_apperasemouse

Erases the mouse cursor, and restores the previous contents.

Inputs:
- Memory as set up by AppStartMouse/AppUpdateMouse


Outputs:
- Mouse cursor erased from screen.


Registers Destroyed:
 AF, BC, DE, HL

Comments:
You must call AppStartMouse to initialize memory before calling AppEraseMouse.  AppEraseMouse erases the mouse cursor when you are done.  The below example allows a user to move the mouse cursor around the screen, and returns once the enter key is pressed.]]></symbol>
  <symbol name="_appupdatemouse" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4d65"><![CDATA[_appupdatemouse

Update the mouse cursor on the screen based on previous key press, and wait for another key press.

Inputs:
- Memory as set up by AppStartMouse


Outputs:
- A: 0Ah if arrow key pressed, 0Ch if enter key pressed
- 986D: Current mouse cursor coordinates
- Mouse cursor updated on screen based on keypress during previous AppUpdateMouse or AppStartMouse


Registers Destroyed:
 BC, DE, HL

Comments:
You must call AppStartMouse to initialize memory before calling AppUpdateMouse.  AppUpdateMouse will wait for a keypress, but will only return when an arrow key, or the enter key, is pressed.  If an arrow key is pressed, the mouse cursor coordinates will be automatically updated.  The below example allows a user to move the mouse cursor around the screen, and returns once the enter key is pressed.]]></symbol>
  <symbol name="_drawrectborder" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4d7d"><![CDATA[_drawrectborder

Draws a rectangular border on the screen.

Inputs:
- H: upper left corner pixel row
- L: upper left corner pixel column
- D: lower right corner pixel row
- E: lower right corner pixel column
- plotLoc,(iy+plotFlags) set to update display only, reset for both display and graph buffer


Outputs:
- Rectangle is drawn


Comments:
See also RectBorder and EraseRectBorder]]></symbol>
  <symbol name="_eraserectborder" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4d86"><![CDATA[_eraserectborder

Erases a rectangular border on the screen.

Inputs:
- H: upper left corner pixel row
- L: upper left corner pixel column
- D: lower right corner pixel row
- E: lower right corner pixel column
- plotLoc,(iy+plotFlags) set to update display only, reset for both display and graph buffer


Outputs:
- Rectangle is erased


Comments:
See also RectBorder and DrawRectBorder]]></symbol>
  <symbol name="_verticalline" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4d95"><![CDATA[_verticalline

Draws a vertical line across the entire screen.

Inputs:
- B: y-coordinate of line (0 being the left edge of the screen)
- (lcdTallP): height of screen in pixels (64 by default)


Outputs:
- None


Registers Destroyed:
 BC,DE

Comments:
This is probably the BASIC "Vertical " command. It will refuse to draw into the bottom row of the screen.]]></symbol>
  <symbol name="_deleteapp" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4dcb"><![CDATA[_deleteapp

Deletes an application.

Inputs:
- A: The first page of the app you want to delete.


Outputs:
-A


Comments:
None]]></symbol>
  <symbol name="_horizontalline" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4e67"><![CDATA[_horizontalline

Draws a left-justified horizontal line.

Inputs:
- (curGY2): Y-coordinate of line (0 being lower-left corner of LCD)
- (pixWide_m_2): width of line


Outputs:
- None


Registers Destroyed:
 None

Comments:
This is probably the BASIC "Horizontal " command.]]></symbol>
  <symbol name="_createappvar" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4e6a"><![CDATA[_createappvar

Creates an appvar.

Inputs:
- HL = Length in bytes
- OP1 = Name of appvar


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If the length of name is shorter than 8 characters it must be zero-terminated. If there isn't enough RAM a memory error will be generated. (OP1) doesn't have to be 15h. Contents of the appvar are random.]]></symbol>
  <symbol name="_createprotprog" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4e6d"><![CDATA[_createprotprog

Creates a protected program.

Inputs:
- HL = Length in bytes
- OP1 = Name of program


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1.


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If the length of name is shorter than 8 characters it must be zero-terminated. If there isn't enough RAM a memory error will be generated. (OP1) doesn't have to be 06h. Contents of the program are random.]]></symbol>
  <symbol name="_createvar" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4e70"><![CDATA[_createvar

Creates a variable of a specified type.

Inputs:
- A: type of variable to create (05h for programs, 06h for protected programs, etc.)
- HL: length in bytes
- OP1+1 = name of variable


Outputs:
- HL points to symbol table entry
- DE points to data section
- OP4 contains the name as inputted in OP1


Registers Destroyed:
 AF,BC,OP1,OP2

Comments:
If the length of name is shorter than 8 characters it must be zero-terminated. If there isn't enough RAM a memory error will be generated. Contents of the program are random.]]></symbol>
  <symbol name="_asmcomp" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4e73"><![CDATA[_asmcomp

Parses an AsmComp( line (such as "AsmComp(prgmA,prgmB") and creates a new squished assembly program.

Inputs:
- (nextParseByte): address of first 5Fh (prgm) token minus one
- (basic_end): end of line to parse


Outputs:
- New assembly program created


Registers Destroyed:
 All

Comments:
This is exactly the same as the AsmComp( used in the OS.]]></symbol>
  <symbol name="_getasmsize" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4e76"><![CDATA[_getasmsize

Gets the squished size of an unsquished assembly program in RAM.

Inputs:
- OP1: type and name of program


Outputs:
- DE: unsquished size of program in bytes


Registers Destroyed:
 All

Comments:
This routine is used by the OS when executing AsmComp(.]]></symbol>
  <symbol name="_squishprgm" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4e79"><![CDATA[_squishprgm

Squishes an unsquished assembly program from RAM to a specified location.

Inputs:
- OP1: type and name of program to squish
- DE: location to store squished bytes


Outputs:
- None


Registers Destroyed:
 All

Comments:
This routine is used by the OS when executing Asm( on unsquished programs and AsmComp(.]]></symbol>
  <symbol name="_executeprgm" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4e7c"><![CDATA[_executeprgm

Executes an assembly program by name.

Inputs:
- OP1: Name of the nostub assembly program you want to run


Outputs:
- Michael Vincet: For telling others about this B_CALL.


Comments:
None]]></symbol>
  <symbol name="_chkfindsymasm" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4e7f"><![CDATA[_chkfindsymasm

Gets information about a specified unsquished assembly program in RAM.

Inputs:
- OP1: type and name of program


Outputs:
- BC: size of program in bytes
- HL: pointer to variable data (past size bytes)
- DE: pointer to VAT entry


Registers Destroyed:
 All

Comments:
This will throw an error if the program is squished, BASIC, archived, etc.]]></symbol>
  <symbol name="_parseprgmname" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4e82"><![CDATA[_parseprgmname

Parses a program token and name out of memory and copies it to OP1.

Inputs:
- (nextParseByte): address of 5Fh (prgm) token minus one
- (basic_end): end of line to parse


Outputs:
- OP1: type and name of program, zero-terminated


Registers Destroyed:
 All

Comments:
This is used by the OS to parse a line containing Asm( or AsmComp(.]]></symbol>
  <symbol name="_sendheaderpacket" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ec7"><![CDATA[_sendheaderpacket

Sends a header packet through the link port and receives an acknowledgement packet.

Inputs:
- OP1: type and name of variable
- (OP2+9): pointer to VAT entry if sending to 83+/84+/SE
- DE: size of variable data (including size bytes)
- A: command to send (06h for normal transfer, 0A2h or 0C9h for silent link)
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_canceltransmission" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4eca"><![CDATA[_canceltransmission

Sends skip/exit packet and receives acknowledgement packet.

Inputs:
- A: skip/exit code (1 for exit, 2 for skip, 3 for out-of-memory, etc.)
- DE: number of bytes to send (theoretically, this is for skip/exit codes with data attached)
- iy+1Bh set up accordingly
- 867C: data to send (the value in A is placed at 867C)


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_sendscreencontents" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ecd"><![CDATA[_sendscreencontents

Responds to a silent link screenshot request by sending an acknowledgement packet and the current LCD contents in the form of a data packet, and receiving acknowledgement.

Inputs:
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_sendramvardata" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ed0"><![CDATA[_sendramvardata

Sends data from RAM variable in data packets and receives acknowledgement over the link port.

Inputs:
- HL: address of variable data
- DE: size of variable data (including size bytes)
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_sendramcmd" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ed3"><![CDATA[_sendramcmd

Sends almost any packet you want over the link port that contains data and receives acknowledgement.

Inputs:
- A: command to send (15h for data packet, 06h/0A2h/0C9h for variable header, etc.)
- HL: address of variable data if sending data packet
- DE: size of packet data
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_sendpacket" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ed6"><![CDATA[_sendpacket

Sends almost any packet you want over the link port that contains data and receives acknowledgement.

Inputs:
- (iMathPtr5): address of data to send
- header: start of packet (4 bytes; machine ID, command, size word)
- iy+1Bh set up accordingly


Outputs:
- B: machine ID of receiving calculator


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_receiveack" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ed9"><![CDATA[_receiveack

Receives 4-byte acknowledgement packet over the link port.

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found, including receiving a different packet.]]></symbol>
  <symbol name="_send4bytepacket" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4edc"><![CDATA[_send4bytepacket

Sends any 4-byte packet and receives acknowledgement packet over the link port.

Inputs:
- H: command to send (such as 09h)
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found, including receiving anything other than an acknowledgement.]]></symbol>
  <symbol name="_senddatabyte" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4edf"><![CDATA[_senddatabyte

Sends a byte over the linkport and adds its value to the checksum at (header+4).

Inputs:
- C: byte to send
- (header+4): old checksum value
- iy+1Bh set up accordingly


Outputs:
- (header+4) updated


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_send4bytes" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ee2"><![CDATA[_send4bytes

Sends any 4 bytes you choose over the link port.

Inputs:
- header: 4 bytes to send


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_sendabyte" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ee5"><![CDATA[_sendabyte

Sends a byte over the link port.

Inputs:
- A: byte to send


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_sendcbyte" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ee8"><![CDATA[_sendcbyte

Sends a byte over the link port.

Inputs:
- C: byte to send


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found. It is identical to SendAByte, only the input is C, not A.]]></symbol>
  <symbol name="_getsmallpacket" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4eeb"><![CDATA[_getsmallpacket

Receives at most 14 bytes of a data packet over the link port and sends either acknowledge or bad checksum packets.

Inputs:
- (header+2): expected size of data packet
- iy+1Bh set up accordingly


Outputs:
- Bytes are received to ioData


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found. It DOES NOT receive the first 4 bytes of the data packet (machine ID, command, size word). Set this up yourself.]]></symbol>
  <symbol name="_getdatapacket" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4eee"><![CDATA[_getdatapacket

Receives a data packet over the link port and sends either acknowledge or bad checksum packets.

Inputs:
- DE: address to receive data
- (arcInfo): page of address to receive data (if in Flash ROM)
- BC: expected size of data packet
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found. It functions the same as GetSmallPacket except it receives the first 4 bytes of the packet.]]></symbol>
  <symbol name="_sendack" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ef1"><![CDATA[_sendack

Sends acknowledgement packet over the link port.

Inputs:
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_get4bytes" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ef4"><![CDATA[_get4bytes

Receives 4 bytes over the link port.

Inputs:
- None


Outputs:
- Bytes received to header


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found. It does not receive just any 4 bytes; it must be the beginning of a valid packet, meaning it must contain a valid machine ID.]]></symbol>
  <symbol name="_get3bytes" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ef7"><![CDATA[_get3bytes

Receives 3 bytes of a packet over the link port.

Inputs:
- A: first byte of packet


Outputs:
- Next 3 bytes of packet are received to header+1
- A is copied to header


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found. It is just like Get4Bytes, only you pass the first byte in A (which it checks for a valid machine ID); it doesn't receive it.]]></symbol>
  <symbol name="_continuegetbyte" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f00"><![CDATA[_continuegetbyte

Continues receiving a byte through the link port after link activity has been detected.

Inputs:
- A: current value of port 0 (bits 2-7 masked out)


Outputs:
- A: byte received


Registers Destroyed:
 All

Comments:
You should probably only call this if you have detected link activity (for use in the link activity hook).]]></symbol>
  <symbol name="_receivevar" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f06"><![CDATA[_receivevar

Receives a variable over the link port.

Inputs:
- (ioData): variable size
- ioData+2: variable type and name
- (ioNewData): bit 7 set to receive to archive
- (sndRecState): 15h
- 1,(iy+1Bh) must be reset
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_receivevardataexists" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f09"><![CDATA[_receivevardataexists

Receives variable name in OP1 by sending continue packet and waiting for data.

Inputs:
- OP1: type and name of variable to receive
- (ioData): size of variable data (not including size bytes)
- 5,(iy+1Bh) must be reset
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if there are problems. The variable in OP1 must already exist.]]></symbol>
  <symbol name="_receivevardata" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f0c"><![CDATA[_receivevardata

Receives variable name in OP1 by sending continue packet and waiting for data.

Inputs:
- OP1: type and name of variable to receive
- (ioData): size of variable data (not including size bytes)
- 5,(iy+1Bh) must be reset
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if there are problems. The variable in OP1 must not already exist.]]></symbol>
  <symbol name="_sendvariable" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f15"><![CDATA[_sendvariable

Sends any variable via silent link through the link port.

Inputs:
- iy+1Bh set up accordingly
- (sndRecState): 0Ah
- OP1: type and name of variable to send (zero'd out)


Outputs:
- None


Registers Destroyed:
 All

Comments:
If the variable is not found, it sends the exit packet and receives acknowledge.]]></symbol>
  <symbol name="_get4bytescursor" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f18"><![CDATA[_get4bytescursor

Turns on and displays the cursor, then receives 4 bytes over the link port.

Inputs:
- None


Outputs:
- 4 bytes received to header
- A: second byte received


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_get4bytesnc" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f1b"><![CDATA[_get4bytesnc

Receives any 4 bytes over the link port.

Inputs:
- None


Outputs:
- 4 bytes received to header
- A: second byte received


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found. It is the no cursor version of Get4BytesCursor.]]></symbol>
  <symbol name="_senddirectorycontents" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f21"><![CDATA[_senddirectorycontents

Responds to a silent link directory request by sending a data packet containing number of free bytes of memory, a header packet for every variable and Flash application, and EOT, receiving acknowledgement after each packet.

Inputs:
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will not throw ERR:LINK nor will it return. It jumps to _JForceCmdNoChar.]]></symbol>
  <symbol name="_sendreadypacket" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f24"><![CDATA[_sendreadypacket

Sends the ready packet over the link port and receives acknowledgement.

Inputs:
- Bits 1-4 of iy+1Bh reset


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_sendapplication" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f30"><![CDATA[_sendapplication

Sends a Flash application to a connected TI-83 Plus or TI-84 Plus.

Inputs:
- A: base page of application to send


Outputs:
- None


Registers Destroyed:
 All

Comments:
This more than likely can and will throw link errors, so be sure to install an error handler first.]]></symbol>
  <symbol name="_sendosheader" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f33"><![CDATA[_sendosheader

Sends a header packet, receives acknowledgement and continue, sends acknowledgement and then the 256 bytes at 7A:4000h (the OS header), then receives acknowledgement.

Inputs:
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_sendospage" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f36"><![CDATA[_sendospage

Sends one page of the OS to another calculator through the I/O port by sending 256 bytes at a time with header and data packets.

Inputs:
- A: page to send (00-08h or 74h-7Dh only, it will handle the 83+ and 84+ pages)
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All but HL and A

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_sendos" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f39"><![CDATA[_sendos

Sends the OS to a connected calculator through the I/O port.

Inputs:
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL can throw different errors depending on what the receiving calculator responds with (if anything).]]></symbol>
  <symbol name="_sendcmd" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f3f"><![CDATA[_sendcmd

Sends almost any packet you want over the link port that contains data and receives acknowledgement.

Inputs:
- A: command to send (15h for data packet, 06h/0A2h/0C9h for variable header, etc.)
- BHL: page:address of variable data if sending data packet
- DE: size of packet data
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_sendgetkeypress" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f48"><![CDATA[_sendgetkeypress

Sends a keypress remotely to another 83+/84+/SE.

Inputs:
- A: keypress to send


Outputs:
- None


Registers Destroyed:
 All

Comments:
This basically sends 73h,87h,A,00h through the link port.]]></symbol>
  <symbol name="_rejectcommand" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f4b"><![CDATA[_rejectcommand

Finishes receiving a silent link command and then rejects it by sending an acknowledgement packet and then the skip/exit packet with a value of 5, then receiving an acknowledgement.

Inputs:
- E: zero
- A: current value of port 0
- set 0,(iy+3Eh) if link assist is active


Outputs:
- 4 bytes received to header
- A: second byte received


Registers Destroyed:
 All

Comments:
This is the link activity hook used by the OS. "add a,e" is actually run when you BCALL it, so make sure E is zero. I can't fathom why they did this. To activate it in the OS, send 73h,29h,00h,00h to the calculator. To deactivate it (or any link activity hook), send 73h,2Ah,00h,00h.]]></symbol>
  <symbol name="_checklinklines" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f4e"><![CDATA[_checklinklines

Checks the link port data lines to see if they match the value in A.

Inputs:
- A: value to check against (mask out bits 2-7)
- set 0,(iy+3Eh) if link assist is active


Outputs:
- Z set if link port is same value as in A


Registers Destroyed:
 All

Comments:
This is a pretty dumb entry point. I suppose it could be checking for a stable link. The OS link activity hook uses this.]]></symbol>
  <symbol name="_gethookbyte" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f51"><![CDATA[_gethookbyte

BCALL Address: 4F51

Inputs:
- HL = pointer to first byte of entry in hook table


Outputs:
- A = first byte of hook.
- Z = set if A=83h.


Registers Destroyed:
 HL

Comments:
Reads the first byte of a hook and checks to see if it is equal to 83h.]]></symbol>
  <symbol name="_getbytepaged" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f54"><![CDATA[_getbytepaged

Gets a byte from a specific page and address.

Inputs:
- HL = offset into page where byte is located (4000h-7FFFh).
- A = page where byte is located.


Outputs:
- B = byte.


Registers Destroyed:
 A, C

Comments:
Registers A and C are destroyed to restore the page located in bank A after this call completes.]]></symbol>
  <symbol name="_setcursorhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f60"><![CDATA[_setcursorhook

Sets and enables the Cursor Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_setgetkeyhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f66"><![CDATA[_setgetkeyhook

Sets and enables the Raw Key Hook.

Inputs:
- A: page of the hook
- HL: Address of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_resethookbytes" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f72"><![CDATA[_resethookbytes

Sets the last byte of every hook's RAM area to its current page.

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 HL,DE,A,B

Comments:
Each hook has a four-byte RAM area, starting at 9B7A. The first two bytes are the hook's address, the third byte is its page, and the fourth is changed to the same as the page by this BCALL.]]></symbol>
  <symbol name="_adjustallhooks" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f75"><![CDATA[_adjustallhooks

Re-adjusts the Flash page of all hooks when a Flash application is deleted.

Inputs:
- A: Base page of deleted Flash application
- C: Number of pages of deleted Flash application


Outputs:
- None


Registers Destroyed:
 HL,BC,D

Comments:
This will shift the page of all hooks currently below the deleted application up by C pages.]]></symbol>
  <symbol name="_setgetcschook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f7b"><![CDATA[_setgetcschook

Sets and enables the GetCSC Hook.

Inputs:
- A: page of the hook
- HL: Address of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_enablelinkactivityhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f84"><![CDATA[_enablelinkactivityhook

Sets and enables the Link Activity Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_enablecatalog2hook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f8d"><![CDATA[_enablecatalog2hook

Sets and enables the Catalog2 Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_enablelocalizehook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f93"><![CDATA[_enablelocalizehook

Sets and enables the Localize Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_settokenhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4f99"><![CDATA[_settokenhook

Sets and enables the Token Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_sethomescreenhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fab"><![CDATA[_sethomescreenhook

Sets and enables the Homescreen Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_clrhomescreenhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fae"><![CDATA[_clrhomescreenhook

Disables the Homescreen Hook.

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_setwindowhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fb1"><![CDATA[_setwindowhook

Sets and enables the Window Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_setgraphmodehook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fb7"><![CDATA[_setgraphmodehook

Sets and enables the Graph Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_delvararc" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fc6"><![CDATA[_delvararc

Deletes a variable from the Ram or Archive

Inputs:
- HL = pointer to Name of variable to delete
- DE = pointer to start of data for variable
- B= 0 if in Ram or the ROM page it's on


Outputs:
- Variable deleted or marked for deletion


Comments:
This should be the routine you use if your items are in Archive or Ram.]]></symbol>
  <symbol name="_setyedithook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fcf"><![CDATA[_setyedithook

Sets and enables the YEqu Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_jforceyequ" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fd5"><![CDATA[_jforceyequ

Loads the Y= editor context.

Inputs:
- None


Outputs:
- cxMain: cxMain vectors set up properly


Registers Destroyed:
 All

Comments:
This will set up the cxMain vectors for the Y= editor context. It will call the Y= hook with A=0.]]></symbol>
  <symbol name="_arc_unarc" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fd8"><![CDATA[_arc_unarc

Swaps the variable in OP1 between RAM and archive.

Inputs:
- OP1: type and name of variable to swap


Outputs:
- None


Registers Destroyed:
 All

Comments:
This will throw an error if there are any problems, including passing a variable that is not archivable/unarchivable.]]></symbol>
  <symbol name="_archivevar" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fdb"><![CDATA[_archivevar

Archives any variable.

Inputs:
- Use outputs of ChkFindSym


Outputs:
- None


Registers Destroyed:
 This is a subroutine of Arc_Unarc.

Comments:
All]]></symbol>
  <symbol name="_unarchivevar" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fde"><![CDATA[_unarchivevar

Unarchives the variable in OP1.

Inputs:
- OP1: type and name of variable to unarchive
- DE: address of data
- A: page of data


Outputs:
- None


Comments:
All]]></symbol>
  <symbol name="_dialogkeyhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fe1"><![CDATA[_dialogkeyhook

This is the key hook used by the dialog routines. It actually runs "add a,e." *sigh*

Inputs:
- none


Outputs:
- none


Registers Destroyed:
 Use with the other Dialog BCALLs.]]></symbol>
  <symbol name="_setfonthook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fe4"><![CDATA[_setfonthook

Sets and enables the Font Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_setregraphhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4fea"><![CDATA[_setregraphhook

Sets and enables the Regraph Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_rungraphinghook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ff0"><![CDATA[_rungraphinghook

Checks the first byte of the block for the Graph Hook.If the byte is 83, the hook is run.  Otherwise, the active flag for the hookis set to zero.

Inputs:
-HL points to the start of the hook. 
-F is 6A if the hook was not run.  


Outputs:
-Depends on hook, might destroy everything.


Registers Destroyed:
Michael Cimino (probably)

Comments:
The block for the Graph Hook must be set up correctly.]]></symbol>
  <symbol name="_settracehook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ff3"><![CDATA[_settracehook

Sets and enables the Trace Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_runtracehook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4ff9"><![CDATA[_runtracehook

Checks the first byte of the block for the Trace Hook.If the byte is 83, the hook is run.  Otherwise, the active flag for the hookis set to zero.

Inputs:
-HL points to the start of the hook.
-F is 6A if the hook was not run.  


Outputs:
-A


Comments:
The block for the Trace Hook must be set up correctly.]]></symbol>
  <symbol name="_getkeyretoff" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:500b"><![CDATA[_getkeyretoff

Gets a keypress from the keyboard.  Similar to GetKey, the 2nd+off key combination will return kOff to the caller, instead of turning the calculator off.

Inputs:
- A: keycode for key pressed.
- (keyExtend) = extended keycode
- bit onInterrupt, (iy+onFlags) set (and A=0) if the On key was pressed
- (iy+shiftFlags) contains shift settings


Outputs:
- DE, HL


Comments:
None]]></symbol>
  <symbol name="_findgroupsym" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:500e"><![CDATA[_findgroupsym

Finds in memory the group whose name is in OP1.

Inputs:
- OP1+1: zero-terminated name of group to find


Outputs:
- C set if not found
- B: Flash page of group's data
- DE: address of group's data
- HL: address of group's VAT entry


Registers Destroyed:
 All

Comments:
This is identical to calling ChkFindSym with (OP1) = GroupObj.]]></symbol>
  <symbol name="_fillbasepagetable" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5011"><![CDATA[_fillbasepagetable

Fills a memory area with the current base page table.

Inputs:
- None


Outputs:
- On the TI-83 Plus: baseAppBrTab: beginning of base page table
- On the TI-83 Plus Silver Edition: baseAppBrTab2: beginning of base page table
- On the TI-84 Plus/Silver Edition: 83:4000h: beginning of base page table


Registers Destroyed:
 All

Comments:
This basically updates the base page table for installed applications.]]></symbol>
  <symbol name="_arcchk" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5014"><![CDATA[_arcchk

BCALL Address: 5014

Inputs:
- 839F: Contains 4 bytes with the free archive space, in normal hexadecimal code. These bytes are in "normal" order and not reversed like bytes normally are on the z80.


Outputs:
- BC, IX


Comments:
Finds the amount of free archive space]]></symbol>
  <symbol name="_flashtoram" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5017"><![CDATA[_flashtoram

Copy data to RAM from Flash .

Inputs:
- A = page of Source
- HL = source address
- DE = destination address
- BC = number of bytes to copy


Outputs:
- HL advanced by BC bytes
- DE advanced by BC bytes
- BC = 0


Comments:
This will wrap to the next page if need be.]]></symbol>
  <symbol name="_setparserhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5026"><![CDATA[_setparserhook

Sets and enables the Parser Hook.

Inputs:
- A: page of the hook
- HL: Address of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_setappchangehook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:502c"><![CDATA[_setappchangehook

Sets and enables the App Change Hook.

Inputs:
- A: Page of the hook
- HL: Address of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_enablegraphicshook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5032"><![CDATA[_enablegraphicshook

Sets and enables the Graphics Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_ilinenohook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:503b"><![CDATA[_ilinenohook

Draws a line on the graph screen, ignoring the Graphics Hook.

Inputs:
- B: X-coordinate of first point (0-95)
- C: Y-coordinate of first point (0-63)
- D: X-coordinate of second point (0-95)
- E: Y-coordinate of second point (0-63)
- H: type of line to draw (0 for off, 1 for on, 2 to invert)
- set fullScrnDraw,(iy+apiFlg4) to use column 95 and row 0
- reset plotLoc,(iy+plotFlags) to draw to both display and plotSScreen
- set bufferOnly,(iy+plotFlag3) to draw to plotSScreen only


Outputs:
- None


Registers Destroyed:
 None

Comments:
This will not call the Graphics Hook, even if it is enabled.]]></symbol>
  <symbol name="_deletetempprograms" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5041"><![CDATA[_deletetempprograms

Deletes all programs with a type byte of 16h (TempProgObj).

Inputs:
- bit 6,(iy+33h) must be reset


Outputs:
- None


Registers Destroyed:
 All

Comments:
Bit 6,(iy+33h) is an override for this; setting it will cause this routine to immediately return, however it will always reset this bit before returning.]]></symbol>
  <symbol name="_enablecatalog1hook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5044"><![CDATA[_enablecatalog1hook

Sets and enables the Catalog1 Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_enablehelphook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:504a"><![CDATA[_enablehelphook

Sets and enables the Help Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_dispcatalogend" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5050"><![CDATA[_dispcatalogend

Displays the end of the catalog on the LCD.

Inputs:
- (curRow): row to display arrow


Outputs:
- None


Registers Destroyed:
 All

Comments:
This basically fakes pressing [UP] on the catalog until it wraps around to the bottom.]]></symbol>
  <symbol name="_runcatalog1hook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:505c"><![CDATA[_runcatalog1hook

Checks the first byte of the block for the Catalog 1 Hook.If the byte is 83, the hook is run; otherwise, the active flag for the hook isset to zero.

Inputs:
- Register values to pass to the catalog 1 hook.


Outputs:
-  If the hook is invalid, it is disabled, and all registers are preserved except F. In this case, the zero flag is cleared if A = 0Ch, set otherwise.
- If the hook is valid, it is called, and all register values upon exiting the hook are preserved and returned.


Registers Destroyed:
 F

Comments:
This routine does not check that the hook is enabled. You must test this yourself, e.g.]]></symbol>
  <symbol name="_enablecxredisphook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:506b"><![CDATA[_enablecxredisphook

Sets and enables the cxRedisp Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_displayvarinfo" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5080"><![CDATA[_displayvarinfo

Displays information for a specified variable (archive status, name, and either type or size, as in the LINK DuplicateName and Mem Mgmt/Del menus).

Inputs:
- OP4: type and name of variable to display info for. This variable must exist.
- (sndRecState): 15h to jump to _JErrorNo immediately, 0Ah or 0Bh to display only the name, and anything else to display menu text.
- inDelete,(iy+ioDelFlag): set to display size, reset to display variable type.
- A: value to place in (ioErrState). The OS uses 2, and I really don't think it matters.
- B: menuCurrent value for the menu to display, if (sndRecState) is not 0Ah, 0Bh, or 15h.


Outputs:
- Archive status, name, and either type or size displayed to last row of LCD (and menu text if specified)


Registers Destroyed:
 All, OP1-OP4

Comments:
Slightly odd inputs, but this has its uses.]]></symbol>
  <symbol name="_setmenuhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5083"><![CDATA[_setmenuhook

Sets and enables the Menu Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_getbcoffsetix" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5089"><![CDATA[_getbcoffsetix

Gets the byte at a specific offset from IX.

Inputs:
- IX: base pointer
- BC: offset from IX


Outputs:
- A: (IX+BC)


Registers Destroyed:
 None

Comments:
Full code of this routine:]]></symbol>
  <symbol name="_forcefullscreen" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:508f"><![CDATA[_forcefullscreen

Sets the Graph Screen to Full

Inputs:
- None


Outputs:
- None


Comments:
Marks Graph as dirty if mode is switched.  You should do this when starting your program.  Just in case.]]></symbol>
  <symbol name="_getvariabledata" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5092"><![CDATA[_getvariabledata

Receives a data packet over the link port and sends either acknowledge or bad checksum packets.

Inputs:
- (header+2): size of packet data
- (iMathPtr5): address to receive data
- (arcInfo): page of address to receive data (if in Flash ROM)
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found. It is a subroutine of GetDataPacket.]]></symbol>
  <symbol name="_findswapsector" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5095"><![CDATA[_findswapsector

Finds the Flash swap sector, or a free sector to use as the swap sector.

Inputs:
- None


Outputs:
- A: Flash page to use as swap sector


Registers Destroyed:
 None

Comments:
This BCALL looks for 0FEh as the first byte of each sector, starting at Flash page 08h. If it does not find one, it then looks for the first empty Flash sector (with first byte as 0FFh).]]></symbol>
  <symbol name="_copyflashpage" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5098"><![CDATA[_copyflashpage

Copies one Flash page to another.

Inputs:
- A: source Flash page
- B: destination Flash page


Outputs:
- None


Registers Destroyed:
 appData

Comments:
Flash must be write enabled first.]]></symbol>
  <symbol name="_hlminus5" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:509e"><![CDATA[_hlminus5

Decreases HL by 5.

Inputs:
- HL: value to decrease by 5


Outputs:
- HL is decreased by 5


Comments:
None]]></symbol>
  <symbol name="_sendarcpacket" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50a1"><![CDATA[_sendarcpacket

Sends almost any packet you want over the link port that contains data and receives acknowledgement.

Inputs:
- pagedPN: page of data to send
- (pagedGetPtr): address of data to send
- header: start of packet (4 bytes; machine ID, command, size word)
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will throw ERR:LINK if any problems are found.]]></symbol>
  <symbol name="_forcegraphkeypress" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50a4"><![CDATA[_forcegraphkeypress

Forces a keypress when on the graph screen.

Inputs:
- A: keypress to fake (and (keyExtend) if necessary)


Outputs:
- None


Registers Destroyed:
 All

Comments:
This entry point is useful for faking a keypress at the graph screen (in a hook, for example).]]></symbol>
  <symbol name="_isfragmented" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50b0"><![CDATA[_isfragmented

Returns the status of the installed Flash applications (fragmented or not).

Inputs:
- None


Outputs:
- Carry reset if Flash application space is fragmented


Registers Destroyed:
 All

Comments:
This BCALL starts at the last Flash application page and works backwards until it finds a deleted or invalid application before the end of the list. If there is one, it returns NC.]]></symbol>
  <symbol name="_chk_batt_low" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50b3"><![CDATA[_chk_batt_low

Check the batteries.

Inputs:
- None


Outputs:
- Z=1: Batteries are low
- Z=0: Batteries are good


Registers Destroyed:
 All

Comments:
This is not just checking bit 0 of port 2.It puts the calculator into a special mode, creates a delay, polls bit 0 of port 2, and puts the calculator back to normal.BCALLing 50B6 is slightly different from 50B3 because a small delay is done before the routine.BCALLs 80F0 and 80F3 are the boot page versions of these routines.]]></symbol>
  <symbol name="_chk_batt_low_2" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50b6"><![CDATA[_chk_batt_low_2

Check the batteries.

Inputs:
- None


Outputs:
- Z=1: Batteries are low
- Z=0: Batteries are good


Registers Destroyed:
 All

Comments:
This is not just checking bit 0 of port 2.It puts the calculator into a special mode, creates a delay, polls bit 0 of port 2, and puts the calculator back to normal.BCALLing 50B6 is slightly different from 50B3 because a small delay is done before the routine.BCALLs 80F0 and 80F3 are the boot page versions of these routines.]]></symbol>
  <symbol name="_arc_unarc2" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50b9"><![CDATA[_arc_unarc2

Swaps the variable in OP1 between RAM and archive.

Inputs:
- OP1: type and name of variable to swap


Outputs:
- None


Registers Destroyed:
 All

Comments:
This will throw an error if there are any problems, including passing a variable that is not archivable/unarchivable.]]></symbol>
  <symbol name="_getappbasepage" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50bc"><![CDATA[_getappbasepage

Returns the base (first) page of an application.

Inputs:
- A: application page


Outputs:
- A: application's base page.


Registers Destroyed:
 DE, HL

Comments:
This entry point is only useful for multipage applications.  It can be used to browse through the application table, as in the example code below (which works only on an SE calculator).]]></symbol>
  <symbol name="_groupallvars" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50c5"><![CDATA[_groupallvars

Minimum OS Version: 1.13

Inputs:
- OP1: type and name of group variable to create


Outputs:
- None


Registers Destroyed:
 All

Comments:
Creates a group variable backup of RAM.]]></symbol>
  <symbol name="_ungroupvar" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50c8"><![CDATA[_ungroupvar

Minimum OS Version: 1.13

Inputs:
- OP1: type and name of group variable


Outputs:
- Variables ungrouped to RAM
- C set if not found


Registers Destroyed:
 All

Comments:
Ungroups a group variable to RAM.]]></symbol>
  <symbol name="_setsilentlinkhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50ce"><![CDATA[_setsilentlinkhook

Sets and enables the Silent Link Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_getsysinfo" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50dd"><![CDATA[_getsysinfo

Requires ROM version 1.13 and later

Inputs:
- HL = Location to store info to.


Outputs:
- (HL)= Major boot code version
- (HL+1)= Minor boot code version
- (HL+2)= Hardware version (0 is 83+, 1 is 83+SE, 2 is 84+, 3 is 84+SE)
- (HL+3)= Bits 0-3 = current speed and bit 4 set if SE
- (HL+4)= Device code default
- (HL+5) through (HL+8) = reserved


Registers Destroyed:
 All

Comments:
Return nine bytes of system information, including current speed.]]></symbol>
  <symbol name="_nzif83plus" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50e0"><![CDATA[_nzif83plus

Minimum OS Version: 1.13

Inputs:
- None


Outputs:
- NZ = TI-83 Plus
- Z = TI-83 Plus Silver Edition, TI-84, or TI-84 Plus Silver Edition.


Registers Destroyed:
 None

Comments:
Returns if the calculator is a TI-83 Plus or not.]]></symbol>
  <symbol name="_linkstatus" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50e3"><![CDATA[_linkstatus

Minimum OS Version: 1.13

Inputs:
- None


Outputs:
- NZ set if calculator is busy


Registers Destroyed:
 None

Comments:
Checks the status of port 0 or the link assist for activity, depending on the model calculator.]]></symbol>
  <symbol name="_keyboardgetkey" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50e9"><![CDATA[_keyboardgetkey

Minimum OS Version: 1.15

Inputs:
- None


Outputs:
- A contains status code
- The actual data retrieved from the keyboard appears to be trashed in the process of popping the error handler&nbsp;?!


Registers Destroyed:
 AF, BC, DE, HL

Comments:
Attempt to receive a keypress from the TI-Keyboard.]]></symbol>
  <symbol name="_runapplib" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50ec"><![CDATA[_runapplib

Minimum OS Version: 2.21

Inputs:
- A = 0: call routine directly B: Flash page of routine DE: address of routine
- A = 1: call routine by offset B: Flash page of table pointer HL: address of table pointer (this is the output from FindSpecialAppHeader) DE: zero-based function to call (0000h, 0001h, 0002h, etc.)
- A = 2: call routine by name B: Flash page of table pointer HL: address of table pointer (this is the output from (FindSpecialAppHeader) OP1: zero-terminated name of function to call. This can be the same as the application or all uppercase.


Outputs:
- None


Registers Destroyed:
 All

Comments:
Calls a function directly, by offset, or by name within a compatible Flash application.]]></symbol>
  <symbol name="_getvarcmdusb" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:50fb"><![CDATA[_getvarcmdusb

Sends a silent link request to another calculator and receives a variable to RAM via USB or link port.

Inputs:
- OP1: type and name of variable to request (must be zero'd out)
- (sndRecState): 15h
- iy+1Bh set up accordingly
- 0,(iy+1Bh) must be set to receive from USB, reset to receive from link port


Outputs:
- None


Registers Destroyed:
 All

Comments:
This BCALL will not throw any errors if problems are encountered.]]></symbol>
  <symbol name="_getvarversion" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:510a"><![CDATA[_getvarversion

Minimum OS Version: 2.30

Inputs:
- B: page of variable's size bytes
- DE: address of variable's size bytes


Outputs:
- Z set if suitable for all calculators (83 and above)
- A: version


Registers Destroyed:
 None

Comments:
Gets the version of a variable based on the tokens included within it.]]></symbol>
  <symbol name="_inverttextinsmode" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5122"><![CDATA[_inverttextinsmode

Minimum OS Version: 2.30

Inputs:
- textInsMode,(iy+textFlags): current text insert mode setting.


Outputs:
- textInsMode,(iy+textFlags): set to inverse of previous value.


Registers Destroyed:
 AF

Comments:
Inverts the setting of the textInsMode,(iy+textFlags) flag.]]></symbol>
  <symbol name="_resetdefaults" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5128"><![CDATA[_resetdefaults

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All

Comments:
Resets calculator defaults.]]></symbol>
  <symbol name="_dispheader" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:512e"><![CDATA[_dispheader

Minimum OS Version: 2.30

Inputs:
- OP3: zero-terminated string to display


Outputs:
- None


Registers Destroyed:
 A,DE,HL

Comments:
Displays zero-terminated string at OP3 in top-left corner and sets (winTop) to 1.]]></symbol>
  <symbol name="_jforcegroup" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5131"><![CDATA[_jforcegroup

Minimum OS Version: 2.30

Inputs:
- OP1: type and name of group variable to create


Outputs:
- cxMain: cxMain vectors set up properly


Registers Destroyed:
 All

Comments:
Loads the "new group" context.]]></symbol>
  <symbol name="_getdate" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:514f"><![CDATA[_getdate

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- OP1=Day of Month
- FPST=Day of Month
- FPS1=Month
- FPS2=Year


Registers Destroyed:
 All

Comments:
Puts the date in FPS.]]></symbol>
  <symbol name="_getdtfmt" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5155"><![CDATA[_getdtfmt

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- OP1=1/2/3
- Z=0 if date format is Y/M/D
- Z=1 if date format is M/D/Y or D/M/Y
- Z=1 and A=$20 if date format is D/M/Y
- Z=1 and A=$00 if date format is M/D/Y


Registers Destroyed:
 All

Comments:
Puts the date format in OP1.]]></symbol>
  <symbol name="_gettime" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:515b"><![CDATA[_gettime

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- OP1=Seconds
- FPST=Seconds
- FPS1=Minutes
- FPS2=Hours


Registers Destroyed:
 All

Comments:
Puts the time in FPS.]]></symbol>
  <symbol name="_gettmfmt" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5161"><![CDATA[_gettmfmt

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- OP1=12/24
- If Z=1 the time format is 12 and A=$00
- If Z=0 the time format is 24 and A=$24


Registers Destroyed:
 All

Comments:
Puts the time format in OP1.]]></symbol>
  <symbol name="_setzeroone" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5167"><![CDATA[_setzeroone

Minimum OS Version: 2.30

Inputs:
- reset 6,(iy+3Fh) for floating-point 0, set for floating-point for 1


Outputs:
- OP1: 0 or 1


Registers Destroyed:
 None

Comments:
Sets OP1 to either the floating point value 0 or 1.]]></symbol>
  <symbol name="_isonetwothree" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:516d"><![CDATA[_isonetwothree

Minimum OS Version: 2.30

Inputs:
- OP1: floating point number to check


Outputs:
- OP1=1: 0,(iy+3Fh) and 1,(iy+3Fh) reset
- OP1=2: 0,(iy+3Fh) set and 1,(iy+3Fh) reset
- OP1=3: 0,(iy+3Fh) and 1,(iy+3Fh) set


Registers Destroyed:
 A

Comments:
Checks whether OP1 is the floating point value 1, 2, or 3.]]></symbol>
  <symbol name="_isop112or24" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5173"><![CDATA[_isop112or24

Minimum OS Version: 2.30

Inputs:
- OP1: floating point number to check


Outputs:
- OP1=12: 2,(iy+3Fh) reset
- OP1=24: 2,(iy+3Fh) set


Registers Destroyed:
 A

Comments:
Checks whether OP1 is the floating point value 12 or 24.]]></symbol>
  <symbol name="_chktimer0" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5176"><![CDATA[_chktimer0

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- OP1=checkTmr(0) or FP value of 32-bit value in ports 45-48


Registers Destroyed:
 All

Comments:
Convert the 32-bits value in ports 45-48 to a Floating Point Number.]]></symbol>
  <symbol name="_clrwindowandflags" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:517f"><![CDATA[_clrwindowandflags

Minimum OS Version: 2.30

Inputs:
- plotDisp,(iy+plotFlags): 0
- donePrgm,(iy+doneFlags): 0


Outputs:
- AF, BC, DE, HL


Comments:
Calls ClrWindow and then resets plotDisp,(iy+plotFlags) and donePrgm,(iy+doneFlags).]]></symbol>
  <symbol name="_setmachineid" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5182"><![CDATA[_setmachineid

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- Bits 1-4 of iy+1Bh reset


Registers Destroyed:
 None

Comments:
Sets up flags so that the link routines will use the machine ID 73h (TI-83 Plus/TI-84 Plus).]]></symbol>
  <symbol name="_resetlists" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5185"><![CDATA[_resetlists

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All

Comments:
Empties lists L1-L6 (if they are in RAM).]]></symbol>
  <symbol name="_execlib" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5191"><![CDATA[_execlib

Minimum OS Version: 2.30

Inputs:
- 4,(iy+3Eh) set


Outputs:
- None


Registers Destroyed:
 All

Comments:
Runs the library hook.]]></symbol>
  <symbol name="_openlib" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:519d"><![CDATA[_openlib

Minimum OS Version: 2.30

Inputs:
- OP1: name of Flash application


Outputs:
- 4,(iy+3Eh) set


Registers Destroyed:
 All

Comments:
Enables the library hook for a specified Flash application.]]></symbol>
  <symbol name="_isop1resid" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:51b8"><![CDATA[_isop1resid

Minimum OS Version: 2.30

Inputs:
- OP1: zero terminated string.


Outputs:
- Z: If the zero terminated string in OP1 is "LRESID"


Registers Destroyed:
 AF, BC, DE, HL

Comments:
Checks if the string at OP1 is "LRESID", where 'L' is the list L character, hex value 5D.]]></symbol>
  <symbol name="_dispaboutscreen" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:51c7"><![CDATA[_dispaboutscreen

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All

Comments:
Displays the "About" screen from the MEM menu.]]></symbol>
  <symbol name="_disp32" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:51cd"><![CDATA[_disp32

Minimum OS Version: 2.30

Inputs:
- A: maximum number of digits to display.  
- 839F: 4 byte value.  Most significant byte is first.
- curRow: Screen coordinates to display at.


Outputs:
- Value displayed to screen.


Registers Destroyed:
 AF, DE, HL

Comments:
Displays the number at 839F in large font.]]></symbol>
  <symbol name="_drawtableeditor" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:51dc"><![CDATA[_drawtableeditor

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All

Comments:
Draws the table editor lines.]]></symbol>
  <symbol name="_matrixname" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:51f1"><![CDATA[_matrixname

Minimum OS Version: 2.30

Inputs:
- A: matrix to store (00h for [A], 01h for [B], 02h for [C], etc.)


Outputs:
- OP1 set to variable name


Registers Destroyed:
 A

Comments:
Sets OP1 to the name of a matrix you specify.]]></symbol>
  <symbol name="_chk_batt_level" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5221"><![CDATA[_chk_batt_level

Check the batteries and returns their state in A.

Inputs:
- None


Outputs:
- A: Battery level from 0-4 (0 being lowest, 4 being freshest)


Registers Destroyed:
 All

Comments:
This entry point puts the calculator into a special mode, polls bit 0 of port 2 several times, then puts the calculator back to normal.]]></symbol>
  <symbol name="_gotolastrow" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5233"><![CDATA[_gotolastrow

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- (curRow): 7
- (curCol): 0
- (penCol): 1
- (penRow): 56


Registers Destroyed:
 HL, A

Comments:
Sets (curRow), (curCol), (penCol), and (penRow) to point to the last row of the screen.]]></symbol>
  <symbol name="_rectborder" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5236"><![CDATA[_rectborder

Minimum OS Version: 2.30

Inputs:
- B: type of drawing (0 to erase, 1 to draw, 2 to invert)
- H: upper left corner pixel row
- L: upper left corner pixel column
- D: lower right corner pixel row
- E: lower right corner pixel column
- plotLoc,(iy+plotFlags) set to update display only, reset for both display and graph buffer


Outputs:
- Rectangle is drawn


Comments:
Either draws, erases, or inverts a rectangular border on the screen.]]></symbol>
  <symbol name="_namedlisttoop1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5248"><![CDATA[_namedlisttoop1

Minimum OS Version: 2.30

Inputs:
- HL: address of zero-terminated string of list name


Outputs:
- OP1 set to variable name


Registers Destroyed:
 All

Comments:
Sets OP1 to the name of a named list you specify.]]></symbol>
  <symbol name="_setvertgraphactive" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5284"><![CDATA[_setvertgraphactive

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All

Comments:
Draws the active triangle in the lower right corner of the graph screen when split vertically between the graph and table editor.]]></symbol>
  <symbol name="_clearvertgraphactive" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5287"><![CDATA[_clearvertgraphactive

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All

Comments:
Erases the active triangle in the lower right corner of the graph screen when split vertically between the graph and table editor.]]></symbol>
  <symbol name="_enableusbhook" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:528a"><![CDATA[_enableusbhook

Sets and enables the USB Activity Hook.

Inputs:
- A: page of the hook
- HL: Adress of the hook


Outputs:
- None


Registers Destroyed:
 None]]></symbol>
  <symbol name="_graphline" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:529c"><![CDATA[_graphline

Minimum OS Version: 2.30

Inputs:
- (8634): 0
- 8635: slope (floating-point number, 9 bytes)
- 863E: y-intercept (floating-point number, 9 bytes)


Outputs:
- None


Registers Destroyed:
 All

Comments:
Graphs a straight line using the current window given the slope and y-intercept.]]></symbol>
  <symbol name="_ziftableeditor" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:52b1"><![CDATA[_ziftableeditor

Minimum OS Version: 2.30

Inputs:
- None


Outputs:
- Z set if in table editor


Registers Destroyed:
 A

Comments:
Returns whether the calculator is in the table editor.]]></symbol>
  <symbol name="_findappname" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:52bd"><![CDATA[_findappname

Minimum OS Version: 2.30

Inputs:
- A: base page of Flash application


Outputs:
- OP1: type and name of Flash application


Registers Destroyed:
 BC, DE, HL

Comments:
Finds the name of a specific Flash application by its base page.]]></symbol>
  <symbol name="_grbufcpycustom" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:52c9"><![CDATA[_grbufcpycustom

Minimum OS Version: 2.30

Inputs:
- HL: adress of area of memory
- B: number of rows


Outputs:
- None


Registers Destroyed:
 All

Comments:
Copies an area of memory to the screen in rows (starting at the top).]]></symbol>
  <symbol name="_delvarsym" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:52e4"><![CDATA[_delvarsym

Minimum OS Version: 2.40

Inputs:
- HL: VAT entry of variable


Outputs:
- None


Registers Destroyed:
 All

Comments:
Deletes the VAT entry of a variable from memory.]]></symbol>
  <symbol name="_findappupnocase" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:52e7"><![CDATA[_findappupnocase

Minimum OS Version: 2.40

Inputs:
- OP1: type and name of Flash application


Outputs:
- OP1: type and name of previous Flash application alphabetically (case-insensitive)
- C set if not found


Registers Destroyed:
 All

Comments:
Finds a Flash application alphabetically in memory.]]></symbol>
  <symbol name="_findappdnnocase" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:52ea"><![CDATA[_findappdnnocase

Minimum OS Version: 2.40

Inputs:
- OP1: type and name of Flash application


Outputs:
- OP1: type and name of next Flash application alphabetically (case-insensitive)
- C set if not found


Registers Destroyed:
 All

Comments:
Finds a Flash application alphabetically in memory.]]></symbol>
  <symbol name="_deleteinvalidapps" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:52ed"><![CDATA[_deleteinvalidapps

Minimum OS Version: 2.40

Inputs:
- (sndRecState): 0FFh to return, anything else to jump to JForceCmdNoChar instead


Outputs:
- None


Registers Destroyed:
 All

Comments:
Searches for and deletes any invalid applications (not containing 800Fh at the beginning).]]></symbol>
  <symbol name="_deleteapp_link" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:52f0"><![CDATA[_deleteapp_link

Deletes an application and then sends a skip/exit packet over the link port.

Inputs:
- A: code to send in the skip/exit packet.
- (appInfo+2): first page of application to delete.
- iy+1Bh set up accordingly


Outputs:
- None


Registers Destroyed:
 All

Comments:
This B_CALL deletes an application without any confirmation from the user by writing a zero to 4000h at the page.]]></symbol>
  <symbol name="_setapprestrictions" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:52f6"><![CDATA[_setapprestrictions

Minimum OS Version: 2.40

Inputs:
- A = 0: disable app by name OP1 = name of app to disable
- A = 1: disable all apps
- A = 2: disable programs
- A = 3: disable programs and all apps
- A = 4: set permission bitmap OP3 (14 bytes) = new bitmap to be ANDed with current bitmap


Outputs:
- Carry set if A = 0 and the requested app does not exist
- Otherwise, carry reset, regardless of the effect or lack thereof


Registers Destroyed:
 AF, BC, DE, HL

Comments:
Enable specified "TestGuard 2" app/program restrictions.]]></symbol>
  <symbol name="_removeapprestrictions" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:52f9"><![CDATA[_removeapprestrictions

Minimum OS Version: 2.40

Inputs:
- A = 1: enable all apps
- A = 2: enable programs
- A = 3: enable programs and all apps


Outputs:
- AF, BC, DE, HL
- OP1-OP2, ramCode, probably other areas


Comments:
Disable specified "TestGuard 2" app/program restrictions.]]></symbol>
  <symbol name="_dispapprestrictions" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:52ff"><![CDATA[_dispapprestrictions

Minimum OS Version: 2.40

Inputs:
- A = 0: query application by name OP1 = type and name of application If application is disabled, "APPS AND/OR PROGRAMS HAVE BEEN DISABLED" is displayed, otherwise returns
- A = 1: any applications disabled? If any application is disabled, "APPS HAVE BEEN DISABLED" is displayed, otherwise returns
- A = 2: programs disabled? If programs are disabled, "PROGRAMS HAVE BEEN DISABLED" is displayed, otherwise returns
- A = 3: programs or applications disabled? If anything has been disabled, "APPS AND/OR PROGRAMS HAVE BEEN DISABLED" is displayed, otherwise returns
- A = 4: certain number of applications disabled? C: number of applications to check for If less than C apps have been disabled, "APPS AND/OR PROGRAMS HAVE BEEN DISABLED" is displayed, otherwise returns
- A = 5: displays "PROGRAMS HAVE BEEN DISABLED"
- A = 6: displays "APPS HAVE BEEN DISABLED"


Outputs:
- None


Registers Destroyed:
 All

Comments:
Display "TestGuard 2"/"Press-to-Test" application/program restrictions screen ("APPS HAVE BEEN DISABLED", etc.).]]></symbol>
  <symbol name="_setuphome" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5302"><![CDATA[_setuphome

Minimum OS Version: 2.40

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All

Comments:
Sets up memory to return to the homescreen.]]></symbol>
  <symbol name="_polarequtoop1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5314"><![CDATA[_polarequtoop1

Minimum OS Version: 2.40

Inputs:
- A: equation to set (00h for r1, 01h for r2, 02h for r3, etc.)


Outputs:
- OP1 set to 03h,40h+A,00h


Registers Destroyed:
 A, HL

Comments:
Sets OP1 to specified polar equation.]]></symbol>
  <symbol name="_getrestrictionsoptions" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:531d"><![CDATA[_getrestrictionsoptions

Minimum OS Version: 2.40

Inputs:
- Carry flag: set for delete menu, reset for disable menu


Outputs:
- Z set if user canceled with [2nd]+[QUIT]/[CLEAR]/etc., reset if OK selected
- B: bit 0 reset for radians, set for degrees
- B: bit 1 reset for stat diagnostics OFF, set for ON


Registers Destroyed:
 All

Comments:
Displays configuration screen for Press-to-Test and returns the user's choice.]]></symbol>
  <symbol name="_dispresetcomplete" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5320"><![CDATA[_dispresetcomplete

Minimum OS Version: 2.40

Inputs:
- res 2,(iy+0) for radians, set for degrees
- res 0,(iy+1Ah) for stat diagnostics ON, set for stat diagnostics OFF


Outputs:
- (curRow): 0


Registers Destroyed:
 All

Comments:
Displays the "Press-to-Test" "Reset Complete" message and waits for a key to be pressed.]]></symbol>
  <symbol name="_findappcustom" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5326"><![CDATA[_findappcustom

Minimum OS Version: 2.40

Inputs:
- OP1: type and name of previous Flash application
- A: flag byte A = 0: search for the next application alphabetically A = 1: search for the previous application alphabetically A = 4: search for next application alphabetically (case-insensitive) A = 5: search for previous application alphabetically (case-insensitive)


Outputs:
- OP1: type and name of found Flash application
- C set if not found


Registers Destroyed:
 All

Comments:
Finds a Flash application alphabetically in memory.]]></symbol>
  <symbol name="_cleargraphstyles" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5329"><![CDATA[_cleargraphstyles

This sets the graphing styles for equations Y1-Y0 and X1T-X6T to 0 and equations r1-r3 to 6.

Inputs:
- None


Outputs:
- None


Comments:
I don't know why you would want to do this, especially only to r1-r3.]]></symbol>
  <symbol name="_md5final" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8018"><![CDATA[_md5final

BCALL Address: 8018

Inputs:
- 8269: (8 bytes) Holds the length in bits of the data hashed so far.
- 8292: (16 bytes) Current MD5 hash


Outputs:
- 8292: (16 bytes) Completed MD5 hash


Registers Destroyed:
 8259: (16 bytes) Alternate registers (roughly equivalent to the AA, BB, CC, and DD registers specified in the MD5 standard.)

Comments:
Finishes an MD5 hash by adding padding and length bits.]]></symbol>
  <symbol name="_rsavalidate" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:801b"><![CDATA[_rsavalidate

Raises a big integer to the 17th power.

Inputs:
- HL points to the signature, a big integer
- 8000 holds the modulus, another big integer


Outputs:
- OP1-OP6 hold the plaintext, a big integer
- DE points to OP1


Registers Destroyed:
 All registers

Comments:
This BCALL takes a large integer pointed to by HL and raises it to the 17th power (modulo the current public key.)  The OS uses this to decrypt RSA signatures, such as those used for certificate blocks.]]></symbol>
  <symbol name="_cmpstr" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:801e"><![CDATA[_cmpstr

Checks to see if two large integers are equal.  

Inputs:
- HL: Address of first integer to compare.
- DE: Address of second integer to compare.


Outputs:
- Zero Flag: Set if integers are equal


Comments:
This B_CALL compares two big integers.  This BCALL is used by the OS in its digital signature verification routines to compare the computed MD5 against the decrypted signature.]]></symbol>
  <symbol name="_writeabyte" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8021"><![CDATA[_writeabyte

Writes a byte to FlashROM.

Inputs:
- A = Flash page to write
- DE = address to write
- B = byte to write


Outputs:
- NZ if the byte could not be written


Registers Destroyed:
 AF, DE, BC, HL

Comments:
Flash must be write enabled first.]]></symbol>
  <symbol name="_eraseflash" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8024"><![CDATA[_eraseflash

Erase a Flash sector (reset it to all FF's.)

Inputs:
- A = Flash page to erase
- HL = address to erase


Outputs:
- NZ if the sector could not be erased


Registers Destroyed:
 AF

Comments:
Flash must be write enabled first.]]></symbol>
  <symbol name="_findfirstcertfield" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8027"><![CDATA[_findfirstcertfield

Searches for a given field in the certificate.

Inputs:
- DE = field to search for (e.g. 0A10 to search for the calculator ID)


Outputs:
- HL = address of the first matching field
- NZ set if not found.


Registers Destroyed:
 AF

Comments:
Flash must be write enabled first.]]></symbol>
  <symbol name="_zerotocertificate" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:802a"><![CDATA[_zerotocertificate

Writes a zero to the certificate page.

Inputs:
- HL = address to write a zero


Outputs:
- NZ if the byte could not be written


Registers Destroyed:
 AF, DE, BC, HL

Comments:
Flash must be write enabled first.]]></symbol>
  <symbol name="_getcertificateend" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:802d"><![CDATA[_getcertificateend

Find the end of the certificate data.

Inputs:
- HL = address of the end of the certificate


Outputs:
- AF, DE
- OP1


Comments:
None]]></symbol>
  <symbol name="_findgroupedfield" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8030"><![CDATA[_findgroupedfield

Search for a given field within a "group."

Inputs:
- AHL = address (first type byte) to start searching
- DE = field to search for (e.g. 0A10 to search for the calculator ID)


Outputs:
- HL = address of the first data byte (not the first type byte) of the first matching field
- BC = length of the field
- NZ set if not found.


Registers Destroyed:
 AF

Comments:
This routine will stop when it reaches any field of a different major field type.  Unless you are explicitly searching for a minor-type-1 field, it will also stop when it reaches one.]]></symbol>
  <symbol name="_mult8by8" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8042"><![CDATA[_mult8by8

BCALL Address: 8042

Inputs:
- a = operand 1
- e = operand 2


Outputs:
- HL = a * e


Registers Destroyed:
 A, HL, DE

Comments:
Multiplies register A by register E and stores the result in register HL.]]></symbol>
  <symbol name="_mult16by8" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8045"><![CDATA[_mult16by8

BCALL Address: 8045

Inputs:
- A = operand 1
- DE = operand 2


Outputs:
- HL = A * DE


Registers Destroyed:
 A, HL, DE

Comments:
Multiplies register A by register DE and stores the result in register HL.]]></symbol>
  <symbol name="_div16by8" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8048"><![CDATA[_div16by8

BCALL Address: 8048

Inputs:
- HL = numerator
- E = denominator


Outputs:
- DE = HL / E
- HL = HL&nbsp;% E


Registers Destroyed:
 A, IX, HL, DE

Comments:
Divides register HL by register E and stores the result in DE and the remainder in HL.]]></symbol>
  <symbol name="_div16by16" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:804b"><![CDATA[_div16by16

BCALL Address: 804B

Inputs:
- HL = numerator
- DE = denominator


Outputs:
- DE = HL / DE
- HL = HL&nbsp;% DE


Registers Destroyed:
 A, IX, HL, DE

Comments:
Divides register HL by register DE and stores the result in DE and the remainder in HL.]]></symbol>
  <symbol name="_loadaindpaged" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8051"><![CDATA[_loadaindpaged

Reads a byte into register A on page A at address HL.

Inputs:
- A = page
- HL = address


Outputs:
- A = byte read


Registers Destroyed:
 All registers preserved

Comments:
Simple enough to implement yourself if speed is important.]]></symbol>
  <symbol name="_flashtoram2" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8054"><![CDATA[_flashtoram2

Copy data to RAM from either Flash or RAM.

Inputs:
- A = source page
- HL = source address
- DE = destination address
- BC = number of bytes to copy


Outputs:
- HL advanced by BC bytes
- DE advanced by BC bytes
- BC = 0


Registers Destroyed:
 A

Comments:
This is almost exactly equivalent to the OS FlashToRAM.]]></symbol>
  <symbol name="_getcertificatestart" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8057"><![CDATA[_getcertificatestart

Find the start of the certificate data.

Inputs:
- HL = address of the start of the certificate, either 4000h or 6000h


Outputs:
- AF
- OP1


Comments:
None]]></symbol>
  <symbol name="_getfieldsize" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:805a"><![CDATA[_getfieldsize

Determine the length of a field.

Inputs:
- A = page where the field is stored
- HL = address of the second byte of the field


Outputs:
- BC = length of the field
- HL = address of the first data byte of the field
- E = high 4 bits of the second type byte of the field


Registers Destroyed:
 OP1

Comments:
This behaves very strangely with "long" (F) fields.]]></symbol>
  <symbol name="_findsubfield" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:805d"><![CDATA[_findsubfield

Search for a subfield of the given field.

Inputs:
- AHL = address of the first type byte of the field whose contents you want to search
- DE = field to search for (e.g. 0A10 to search for the calculator ID)


Outputs:
- HL = address of the first type byte of the first matching field
- NZ set if not found.


Registers Destroyed:
 AF

Comments:
This routine is much like the other field search routines, but starts by skipping to the data section of the given field, and continues from there.]]></symbol>
  <symbol name="_checkheaderkey" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8063"><![CDATA[_checkheaderkey

Check if a given key (specified by an app or OS header) is present on the calculator.

Inputs:
- appData contains the app header


Outputs:
- Z if the key specified is present, either as a built-in (freeware) key or in the certificate.


Registers Destroyed:
 AF, BC, DE, HL

Comments:
Flash must be write-enabled first if you want to check for non-built-in keys.]]></symbol>
  <symbol name="_load_lfontv2" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:806c"><![CDATA[_load_lfontv2

Load a large font bitmap in variable-width format.

Inputs:
- HL = character * 8


Outputs:
- lFont_record = variable-width bitmap (character width followed by seven bytes of bitmap data.)
- HL points to lFont_record


Registers Destroyed:
 AF, BC, DE

Comments:
If you think this routine sounds suspiciously like Load_LFontV... you're right!  On the TI-83 Plus, it points to the exact same code.]]></symbol>
  <symbol name="_load_lfontv" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:806f"><![CDATA[_load_lfontv

Load a large font bitmap in variable-width format.

Inputs:
- HL = character * 8


Outputs:
- lFont_record = variable-width bitmap (character width followed by seven bytes of bitmap data.)
- HL points to lFont_record


Registers Destroyed:
 AF, BC, DE

Comments:
Despite being in the boot code, this routine checks if an OS is loaded, and if so, calls the font and localize hooks if they are enabled.]]></symbol>
  <symbol name="_receiveos" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8072"><![CDATA[_receiveos

Receives an operating system from another device and then reboots.

Inputs:
- 5,(iy+1Bh): reset for I/O, set for USB
- ioData: contents of first packet


Outputs:
- None


Registers Destroyed:
 All

Comments:
When receiving an OS over DBUS, the first packet (i.e., the "variable header" for the OS header) must have been received and its contents stored to (ioData).]]></symbol>
  <symbol name="_findosheadersubfield" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8075"><![CDATA[_findosheadersubfield

Search for a subfield of the given app or OS header.

Inputs:
- AHL = address of the first type byte of the field whose contents you want to search (8000h if you want to search an installed app/OS header)
- DE = field to search for (e.g. 8010 to search for the key ID)


Outputs:
- HL = address of the first type byte of the first matching field
- NZ set if not found.


Registers Destroyed:
 AF

Comments:
This routine requires that the byte it start at not be set to FF (i.e., empty space) or 00 (i.e., a deleted application.)  The OS uses this routine to search for data in its own header.]]></symbol>
  <symbol name="_findnextcertfield" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8078"><![CDATA[_findnextcertfield

Searches for a given field in the certificate.

Inputs:
- DE = field to search for
- HL = address to start looking (the first byte of a field, which will not be returned)


Outputs:
- HL = address of the next matching field
- NZ set if not found.


Registers Destroyed:
 AF

Comments:
Flash must be write enabled first.]]></symbol>
  <symbol name="_getbyteorboot" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:807b"><![CDATA[_getbyteorboot

This BCALL receives a byte from the link assist. If it is unsuccessful, it displays an error message, waits for a keypress, and boots the calculator (clearing all RAM or waiting for a valid OS).

Inputs:
- C: byte received


Outputs:
- All


Comments:
None]]></symbol>
  <symbol name="_getserial" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:807e"><![CDATA[_getserial

BCALL Address: 807E

Inputs:
- OP4: Contains the first five bytes of the calculator ID
- B = 5, the number of bytes that were loaded


Outputs:
- AF, DE, HL


Comments:
Gets the first five bytes of the calculator ID.]]></symbol>
  <symbol name="_eraseflashpage" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8084"><![CDATA[_eraseflashpage

Erase a Flash sector (reset it to all FF's.)

Inputs:
- A = Flash page to erase


Outputs:
- NZ if the sector could not be erased


Registers Destroyed:
 AF, HL

Comments:
Flash must be write enabled first.]]></symbol>
  <symbol name="_writeflashunsafe" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8087"><![CDATA[_writeflashunsafe

Writes data to Flash, without checking the address.

Inputs:
- A = Flash page to write
- DE = address to write
- BC = number of bytes to write
- HL = source address, must be in RAM


Outputs:
- NZ if the byte could not be written


Registers Destroyed:
 AF, DE, BC, HL

Comments:
Flash must be write enabled first.]]></symbol>
  <symbol name="_md5update" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8090"><![CDATA[_md5update

BCALL Address: 8090

Inputs:
- BC: The length of the data
- HL: The location of the data


Outputs:
- 8269: (8 bytes) Holds the length in bits of the data hashed so far.
- 8292: (16 bytes) Will be changed to contain the new (incremental) MD5 hash of the data you gave it


Registers Destroyed:
 8259: (16 bytes) Alternate registers (roughly equivalent to the AA, BB, CC, and DD registers specified in the MD5 standard.)

Comments:
Calculates the MD5 checksum]]></symbol>
  <symbol name="_checkosvalidated" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:809c"><![CDATA[_checkosvalidated

Checks bit 0 of certificate byte 1FE0h, which is set to zero once the OS has been successfully validated.

Inputs:
- Z if the OS has been validated


Outputs:
- AF
- OP1


Comments:
None]]></symbol>
  <symbol name="_setupapppubkey" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:809f"><![CDATA[_setupapppubkey

BCALL Address: 809F

Inputs:
- A = base page of the application to be validated (must be in Flash)


Outputs:
- Memory at 8000 contains the corresponding key


Registers Destroyed:
 BC, DE

Comments:
Loads an application public key as a big integer into the appData area.]]></symbol>
  <symbol name="_sigmodr" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80a2"><![CDATA[_sigmodr

BCALL Address: 80A2

Inputs:
- HL points to the signature, a big integer
- 8000 holds the modulus, another big integer


Outputs:
- OP1-OP6 hold the plaintext, a big integer


Registers Destroyed:
 All registers

Comments:
Squares a large integer modulo n.]]></symbol>
  <symbol name="_transformhash" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80a5"><![CDATA[_transformhash

Applies one of the four f-transformations as appropriate for the application to be validated.

Inputs:
- 8291: The MD5 hash as a big integer
- 83E6: The parameter f as a big integer
- 8000: The modulus


Outputs:
- MD5Buffer: The MD5 hash appropriately transformed.


Registers Destroyed:
 8100: 130-byte area which the multiplication routine uses to store its result

Comments:
Given p, q prime, p Ã¢â€°Â¡ 3 mod 8, q Ã¢â€°Â¡ 7 mod 8, and m relatively prime to both, exactly one of the following is a quadratic residue modulo pq:]]></symbol>
  <symbol name="_isappfreeware" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80a8"><![CDATA[_isappfreeware

Check if a given app key ID is a "freeware" one.

Inputs:
- appID contains the app key ID low nibble of (appID + 1) is the length of the ID (appID + 2) to (appID + n) are the actual ID


Outputs:
- Z if the given key is "freeware" for this calculator (i.e., 0102 on the 73, 0104 on the 83 Plus, 0104 or 010A on the 84 Plus)


Registers Destroyed:
 AF

Comments:
This is a horribly complicated routine to do a very simple task.]]></symbol>
  <symbol name="_findappheadersubfield" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80ab"><![CDATA[_findappheadersubfield

Search for a subfield of the given app header.

Inputs:
- AHL = address of the first type byte of the field whose contents you want to search (4000h if you want to search an installed app header)
- DE = field to search for (e.g. 8010 to search for the key ID or 8040 for app name)


Outputs:
- HL = address of the first type byte of the first matching field
- NZ set if not found.


Registers Destroyed:
 AF

Comments:
This routine is almost identical to FindOSHeaderSubfield; the difference is that it will allow you to search starting at a zero byte (i.e., a deleted app header.)  The OS uses this routine to search for data in Flash Apps (which may or may not have been deleted already.)]]></symbol>
  <symbol name="_div32by16" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80b1"><![CDATA[_div32by16

Divide a 32-bit number stored in OP1 by DE.

Inputs:
- OP1: 32-bit big endian dividend
- DE: divisor


Outputs:
- OP1: 32-bit big endian quotient
- OP2: 32-bit big endian remainder


Registers Destroyed:
 AF, BC, HL, IX

Comments:
This routine is rather inefficient.]]></symbol>
  <symbol name="_xora" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80bd"><![CDATA[_xora

Calculates the exlusive OR (XOR) of the value in register A with itself and puts the result back in A.

Inputs:
- A = Number to be XOR'd with itself.


Outputs:
- A = 0
- Flags: Same as for the XOR A instruction.


Registers Destroyed:
 None.

Comments:
This B_CALL is a complete waste of time.]]></symbol>
  <symbol name="_bignumpowermod17" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80c0"><![CDATA[_bignumpowermod17

Raises a big integer to the 17th power.

Inputs:
- 8182 holds the signature
- 8000 holds the modulus, another big integer


Outputs:
- OP1-OP6 hold the plaintext, a big integer
- DE points to OP1


Registers Destroyed:
 All registers

Comments:
This BCALL takes a large integer pointed at address 8182h and raises it to the 17th power (modulo the current public key.)  The OS uses this to decrypt RSA signatures, such as those used for certificate blocks.  This differs only from RSAValidate in that this romcall expects the signature to already be copied to 8182h.]]></symbol>
  <symbol name="_prodnrpart1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80c3"><![CDATA[_prodnrpart1

Retrieve the hardware version and product number.

Inputs:
- D = Hardware version * 10h
- E = Product number


Outputs:
- HL


Comments:
None]]></symbol>
  <symbol name="_writeabytesafe" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80c6"><![CDATA[_writeabytesafe

Writes a byte to FlashROM, but will refuse to write to page 1Eh/3Eh/7Eh.

Inputs:
- A = Flash page to write
- DE = address to write
- B = byte to write


Outputs:
- NZ if the byte could not be written


Registers Destroyed:
 AF, DE, BC, HL

Comments:
Flash must be write enabled first.]]></symbol>
  <symbol name="_writeflash" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80c9"><![CDATA[_writeflash

Writes data to Flash, but prevent writing to page 1E.

Inputs:
- A = Flash page to write
- DE = address to write
- BC = number of bytes to write
- HL = source address, must be in RAM


Outputs:
- NZ if the byte could not be written


Registers Destroyed:
 AF, DE, BC, HL

Comments:
Flash must be write enabled first.]]></symbol>
  <symbol name="_setupdatestamppubkey" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80cc"><![CDATA[_setupdatestamppubkey

Loads the date-stamp public key as a big integer into the appData area.

Inputs:
- None


Outputs:
- Memory at 8000 contains the date-stamp public key


Registers Destroyed:
 BC

Comments:
This key is used for validating date stamps in the certificate and in some FlashApps.  It is built-in, and unlike the other keys cannot be upgraded.  Also unlike the other keys, it is identical on the TI-73.]]></symbol>
  <symbol name="_displaybootmessage" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80e7"><![CDATA[_displaybootmessage

Minimum Hardware Version: 2

Inputs:
- HL: offset into table for string to display


Outputs:
- All


Comments:
Displays a message from the boot code at the top-left corner of the screen.]]></symbol>
  <symbol name="_displaybooterror10" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80ed"><![CDATA[_displaybooterror10

Minimum Hardware Version: 2

Inputs:
- DE: offset into table for string to display


Outputs:
- All


Comments:
These BCALLs display a certain error message along with "Press any key to turn unit off. Then turn unit on.", then wait for a key and reset RAM.]]></symbol>
  <symbol name="_displayosprogress" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80f9"><![CDATA[_displayosprogress

Minimum HW Version: 2

Inputs:
- (appSearchPage): previous page received (0FFh for none)
- (ioData+15): flag byte (80h to NOT erase Flash sector)
- (ioData+16): address to receive data to
- (ioData+18): OS page to be received next
- (83E6): number of pages received so far
- (83E7): total number of OS pages


Outputs:
- A: Flash page to receive data to
- DE: address to receive data to


Registers Destroyed:
 All

Comments:
Displays percentage of OS received so far and erases Flash for next page to be received.]]></symbol>
  <symbol name="_resetcalc" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80fc"><![CDATA[_resetcalc

Minimum Hardware Version: 2

Inputs:
- None


Outputs:
- None


Registers Destroyed:
 All

Comments:
Resets the calculator.]]></symbol>
  <symbol name="_setupospubkey" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80ff"><![CDATA[_setupospubkey

Minimum Hardware Version: 2

Inputs:
- A = OS header page (3Ah or 7Ah)


Outputs:
- Memory at 8000 contains the OS public key


Registers Destroyed:
 BC, DE

Comments:
Loads the OS public key as a big integer into the appData area.]]></symbol>
  <symbol name="_displaybooterror1" moreinfo="http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:8111"><![CDATA[_displaybooterror1

Minimum Hardware Version: 2

Inputs:
- DE: offset into table for string to display


Outputs:
- All


Comments:
These BCALLs display a certain error message along with "Press any key to turn unit off. Then turn unit on.", then wait for a key and reset RAM.]]></symbol>
</documentation>